包含所有非公共(public)类的 Java 文件,其中一个类具有 main 方法

标签 java class classloader access-modifiers

我刚刚在玩的时候遇到了这个奇怪的场景:-)

Java 的文档规定一个文件可以包含所有非公共(public)类和不匹配任何类的文件名。当一个人试图在编译后运行时,即使在指定了 main 方法的类之一之后,它也会生成异常。需要说明如何执行此文件的主要方法。

我的测试代码在名为NoPublicClasses.java的文件中如下:

class Class1{

}

class Class2{
public static void main(String[] args){

}

}

它编译得很好。但是如果你尝试运行它,它会抛出异常。您可以在下面查看我尝试过的内容

java NoPublicClasses  

对于上述情况,我预计会发生异常,但它确实如我所料发生了

java Class2

它也抛出了意想不到的异常。所以我需要一些好心人来解释原因,或者如果在不更改访问修饰符和文件名或类名的情况下有任何解决此问题的方法,请告诉我。

感谢和问候。

最佳答案

执行 java Class2 时不应该出现异常。我刚刚试过了,它成功了:

package tests;

class Class1 {
}

class Class2 {
    public static void main(String[] args) {
        System.out.println("Up and running");
    }
}

在命令行控制台中:

java tests.Class2
Up and running

关于包含所有非公共(public)类的 Java 文件,其中一个类具有 main 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18166026/

相关文章:

c++ - 成员函数与友元函数 : why one and not the other?

java - 在 Maven 依赖项中查找包中的所有类

java - 使用自定义类加载器时覆盖 IntelliJ 中的调试类路径

java - 如何在jvm上运行生成的frege java代码?

C# 部分类

java - 将多个子DTO设计成单个请求Spring Boot

c++ - 如何在 C++ 中创建静态类?

PHP fatal error : Class not found

java - 删除不需要的参数

java - ClientAbortException : java.net.SocketException:连接由对等方重置:套接字写入错误