很长时间之后,我刚刚拿起我的Ubuntu机器进行一些与Java相关的工作,发现我已经安装了Java,但没有javac。
我用主要方法和简单的打印语句制作了一个Test.java文件。我在终端中写道:
java Test.java
Run Code Online (Sandbox Code Playgroud)
我希望没有javac,它不应编译和运行,但是它将输出打印在我的控制台上。然后,我安装了一个JDK来启用javac并运行它:
javac Test.java
Run Code Online (Sandbox Code Playgroud)
这创建了一个Test.class文件。仍然要运行Test类,我需要输入内容,java Test.java并在输入java Test时抛出java.lang.NoClassDefFoundError。
有人可以向我解释这些命令的背景如何吗?编辑:这是我的Test.java的内容:
package Learning;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Hello World!");
}
}
Run Code Online (Sandbox Code Playgroud)
您在这里体验的是为Java 11添加的一项新功能:
在Java SE 11中,您可以选择直接启动一个源代码文件,而无需中间编译。只是为了您的方便,这样像您这样的新手就不必运行javac + java(当然,让他们感到困惑是为什么)。
所以:如果你有一个单一的自包含的java文件...那么的Java二进制认识到,编译它,并直接(使用Java 11或更高版本时)运行它。
但请记住:这就是快速运行单个课程的一种方法。这并不是要取代“真实”的做事方式。
通常,您仍然javac先使用,然后再使用java。或者,更真实的世界:您使用构建的系统来描述要构建的内容,然后构建系统javac会在幕后为您调用。
| 归档时间: |
|
| 查看次数: |
124 次 |
| 最近记录: |