java - Java File 使用 java FileName.java 命令运行,但不使用 javac Filename.java 编译
问题描述
文件名: B.java
public class B
{
public static void main(String[] args){}
}
public class A{}
java B.java
运行没有错误javac B.java
给出编译错误:class A needs to be declared in a file A.java
我知道一个java文件不能有一个以上的公共类,但是java
当你得到代码的编译错误时,为什么java文件可以使用命令运行而没有错误javac
?
解决方案
Java-11+ 允许在不编译的情况下启动单文件源代码程序。您可以从这篇文章中了解更多信息。根据规范,如果文件中的第一个类有main
,它会执行相同的操作而不关心public
文件中的其他类。因此,如果您更改文件中类的顺序并尝试java B.java
,它将失败。
推荐阅读
- machine-learning - 插补仅用于特征选择步骤,但不适用于 sklearn 管道中的模型输入
- c# - 如何在不同控制器的视图中显示计数
- javascript - 上传图片然后使其可移动和可调整大小
- java - EditTextPreference 不适用于字符串
- c++ - 在 Visual Studio 2015 上使用多个运行时库
- graphql - proxy.writeQuery 奇怪的行为
- python - Matplotlib 条形图 X 轴标签顺序
- android - 如何解决 Unable to resolve dependency for ':@debug/compileClasspath': Could not resolve com.google.auto.value:auto-value-annotations:1.6.5
- java - 使用 Gmail API 将请求正文写入服务器时出错
- c# - 对资源的有效锁定,由字符串标识