为什么 Java 命令使用 java 文件作为参数
Why is Java command working with java files as parameter
我有 java 文件 HelloWorld.java
,代码如下:
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
现在我的理解是,编译和运行这需要两个步骤:步骤1)javac HelloWorld.java
步骤2)java HelloWorld
。很明显,命令 java 将 class 文件名作为其输入参数。
但是,如果我这样做 java HelloWorld.java
,它会打印程序的输出,尽管我传递的是 java 文件名而不是 class 名称。请参阅下面的屏幕截图。
有人可以澄清一下吗?
Java - openjdk version "11.0.8" 2020-07-14 LTS(AWS Corretto)
OS - Amazon Linux 2(red hat based OS)
基础设施 - AWS EC2 instance
编辑:我还注意到只有在相应的 class 文件不在目录中时才会发生这种情况。如果对应的 class 文件存在,它会给出错误:error: class found on application class path: HelloWorld
这是在 java 11.
中引入的
如果安装了JDK,可以直接使用源文件调用javac
java <Class>.java
与
基本相同
javac <Class>.java
java <Class>
这是 Java 11 中引入的新功能,用于将 java 启动器增强为 运行 作为 Java 源代码的单个文件提供的程序。 有关更多信息,您可以访问 link JEP 330
我有 java 文件 HelloWorld.java
,代码如下:
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
现在我的理解是,编译和运行这需要两个步骤:步骤1)javac HelloWorld.java
步骤2)java HelloWorld
。很明显,命令 java 将 class 文件名作为其输入参数。
但是,如果我这样做 java HelloWorld.java
,它会打印程序的输出,尽管我传递的是 java 文件名而不是 class 名称。请参阅下面的屏幕截图。
有人可以澄清一下吗?
Java - openjdk version "11.0.8" 2020-07-14 LTS(AWS Corretto)
OS - Amazon Linux 2(red hat based OS)
基础设施 - AWS EC2 instance
编辑:我还注意到只有在相应的 class 文件不在目录中时才会发生这种情况。如果对应的 class 文件存在,它会给出错误:error: class found on application class path: HelloWorld
这是在 java 11.
中引入的如果安装了JDK,可以直接使用源文件调用javac
java <Class>.java
与
基本相同javac <Class>.java
java <Class>
这是 Java 11 中引入的新功能,用于将 java 启动器增强为 运行 作为 Java 源代码的单个文件提供的程序。 有关更多信息,您可以访问 link JEP 330