java11允许在一行中进行编译和执行

问题描述 投票:0回答:2

在一个名为filename.java的文件中

class filename{
public static void main(String[] a){
System.out.println("From filename main method");
}
}

public class ClassName{
public static void main(String[] a){
System.out.println("From First main method");
}
}

观察以下命令:

命令1:

C:\javaDJ>java filename.java
From filename main method

命令2:

C:\javaDJ>javac filename.java
filename.java:7: error: class ClassName is public, should be declared in a file named ClassName.java
public class ClassName{
      ^
1 error

观察:

命令1编译(我在内部假设)并成功执行。命令2引发编译错误。

问题陈述:

[当文件(filename.java)包含一个未命名为'filename.java'(文件名的名称)的公共类(ClassName)时,java cmd如何能够编译名为filename.java的文件。 ?

java java-11
2个回答
0
投票

使您能够成功执行Command 1的功能是Java 11中引入的。该功能使您可以直接使用java解释器执行Java源代码文件。源代码在内存中编译,然后由解释器执行,而不会在磁盘上生成.class文件。检查this了解更多信息。

从Java开始以来,您在Command 2中遇到的错误就一直在那里。


0
投票

突出显示JEP#Launch Single-File Source-Code Programs中有关行为的特定部分

在源文件模式下,执行过程如下:

  • 要执行的类是在源文件。它必须包含标准公众声明静态void main(String [])方法。
© www.soinside.com 2019 - 2024. All rights reserved.