在一个名为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的文件。 ?
使您能够成功执行Command 1的功能是Java 11中引入的。该功能使您可以直接使用java解释器执行Java源代码文件。源代码在内存中编译,然后由解释器执行,而不会在磁盘上生成.class文件。检查this了解更多信息。
从Java开始以来,您在Command 2中遇到的错误就一直在那里。
突出显示JEP#Launch Single-File Source-Code Programs中有关行为的特定部分
在源文件模式下,执行过程如下:
- 要执行的类是在源文件。它必须包含标准公众声明静态void main(String [])方法。