【问题标题】:Why is Java command working with java files as parameter为什么 Java 命令使用 java 文件作为参数
【发布时间】:2020-11-28 14:27:47
【问题描述】:

我有 java 文件HelloWorld.java,代码如下:

class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!"); 
    }
}

现在我的理解是,要编译和运行它,我们需要两个步骤:步骤 1)javac HelloWorld.java 步骤 2)java HelloWorld。很明显,命令 java 将类文件名作为其输入参数。

但是,如果我执行java HelloWorld.java,它会打印程序的输出,尽管我已将 java 文件名而不是类名传递给它。请参阅下面的屏幕截图。

有人可以澄清一下吗?

Java - openjdk version "11.0.8" 2020-07-14 LTS(AWS Corretto)

操作系统 - Amazon Linux 2(red hat based OS)

基础设施 - AWS EC2 instance

编辑:我还注意到只有当目录中没有相应的类文件时才会发生这种情况。如果有对应的类文件,则报错:error: class found on application class path: HelloWorld

【问题讨论】:

    标签: java java-11 javacompiler


    【解决方案1】:

    这是在 java 11 中引入的。

    如果你已经安装了JDK,可以直接使用源文件调用javac

    java <Class>.java
    

    基本一样

    javac <Class>.java
    java <Class>
    

    【讨论】:

    【解决方案2】:

    这是 Java 11 中引入的一项新功能,用于增强 Java 启动器以运行作为单个 Java 源代码文件提供的程序。 更多信息您可以访问链接JEP 330

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-16
      • 1970-01-01
      • 2012-09-24
      • 2012-12-21
      • 2015-09-12
      • 1970-01-01
      • 2020-06-21
      相关资源
      最近更新 更多