为何使用java Main.java命令无需编译即可运行Java程序?
为什么直接用
java Main.java能运行未编译的Java程序? 这其实是Java 11开始新增的单源文件程序运行特性,专门用来简化小型Java程序的开发流程:
- 执行
java Main.java时,JVM会在后台自动帮你完成编译操作:临时把.java文件编译成字节码,执行完程序后再删掉临时生成的.class文件,所以你看不到编译后的文件,但程序已经正常跑起来了。 - 这个特性只适合单文件的简单程序——也就是所有代码都在一个
.java文件里,没有复杂的包结构或者多文件依赖的情况。如果是多文件的项目,还是得老老实实用javac编译后再运行。 - 对比两种运行流程:
- 传统流程:
javac Main.java(生成Main.class)→java Main - 新流程:直接执行
java Main.java,一步搞定编译+运行
- 传统流程:

内容的提问来源于stack exchange,提问作者Techie
相关产品推荐
相关产品推荐

