java - 在不编译的情况下运行 Java 程序
问题描述
Main.java
最近,我安装了 Java 11。在编码时,不小心,我没有用编译javac Main.java
,而是写了java Main.java
. 它没有向我显示任何错误,并且没有任何问题。为什么会这样?这是 Java 较新版本中的新功能吗?
内容Main.java
:
public class Main {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
在 Java 8 中运行:
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)
>>> java Main.java
Error: Could not find or load main class Main.java
在 Java 11 中运行:
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
>>> java Main.java
Hello, World!
解决方案
此功能是作为 JEP 330 的一部分引入的:启动单文件源代码程序。
在源文件模式下,效果就像将源文件编译到内存中,并执行在源文件中找到的第一个类。例如,如果一个名为 HelloWorld.java 的文件包含一个名为 hello.World 的类,那么命令
java HelloWorld.java 非正式地等价于
javac -d HelloWorld.java java -cp hello.World
这是JEP
推荐阅读
- php - PHP-DI says missing parameter while in definition file has set
- php - 我如何遍历具有多个值的关联数组
- sharepoint-online - 如何在 SPFx 中呈现指向 newform.aspx 的链接
- excel - 从字母数字字符串中删除整数
- r - 如何使用 3 个不同的参数制作 geom_line
- visual-studio - 如何为现有的 dtsx 包文件创建解决方案/项目
- r - 将向量列表作为参数进行映射以进行向量化
- php - 在 websockets PHP 中使用数据库连接好不好?
- django - Django - manytomany 上的查询过滤器存在
- javascript - 在 div 的所有子元素中搜索文本并隐藏不包含它的文本