问题描述
我已经安装了Java 11。当我运行命令java <filename.java>
进行编译和运行代码时,它将编译并运行程序,以CMD显示输出,但不会产生任何.class
文件。
您能告诉我为什么它不产生.class
文件吗?
解决方法
看看JEP 330。
自Java 11起,java FileName.java
编译并运行FileName.java
;但是,编译发生在“幕后”,而没有显式生成相应的.class
文件。而是直接将相应的字节码加载到JVM实例中。
动机
单文件程序(整个程序位于单个源文件中)-在学习Java的早期阶段以及编写小型实用程序时很常见。在这种情况下,必须在运行程序之前对其进行编译是纯粹的仪式。此外,单个源文件可能会编译为多个类文件,这给“运行该程序”的简单目标增加了打包开销。希望能够使用Java启动器直接从源代码运行程序:
java HelloWorld.java
如果要将.class
文件作为输出,仍应使用javac
,如下:
javac FileName.java