使用所有非公共类初始化Java文件,其中一个类有一个main方法
我只是在玩的时候遇到了这个奇怪的场景:-)
Java文档指定一个文件可以包含所有非公共类,并且文件名与任何类都不匹配。当一个人试图在编译后运行时,即使在其中一个类指定了main方法之后,它也会生成异常。需要解释如何执行此文件的主方法
在名为noPublicClass的文件中,我的测试代码如下所示。java:
class Class1{
}
class Class2{
public static void main(String[] args){
}
}
它编译得很好。但如果您尝试运行此命令,它将抛出异常。下面你可以看看我试过什么
java NoPublicClasses
对于上述情况,我预期会出现异常情况,并且正如我预期的那样发生,但当我这样做时
java Class2
它还引发了意外的异常。因此,我需要一些善良的人来解释原因,或者如果有任何解决方案,这个问题不改变访问修饰符和文件名或类名,请让我知道
谢谢和问候
# 1 楼答案
执行java Class2时不应该出现异常。我刚试过,效果很好:
在命令行控制台中:
# 2 楼答案
你的第二个例子应该正常工作。确保您正在执行正确的类(即不要将其与文件名混淆)。引用表格JLS specification -section 1.2. Example Programs:
JLS使用顶级课程不公开的课程。我能够像上面描述的那样运行上面的例子。我使用了一个名为
AAA.java
的文件名,尽管它在编译时会生成一个Test.class