我在一个Java源文件中有两个类,源文件的名称与公共类相同。当我运行源文件时,我收到以下错误:
package inheritance;
class clsnae {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("first");
}
}
public class clsname {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("second");
}
}
public
关键字,则只打印“ first ”和不“ second ”,但添加后类名的public
关键字,为什么它仍然尝试运行第一个类而不是运行第二个类?答案 0 :(得分:2)
您的代码很好。有两种main
方法,您可以一次运行任何方法。
第一次 eclipse 会问你运行哪个main
方法。
如果您想稍后更改,可以修改您的run configurations
并选择main class
。
然后选择main
类:
以下是示例运行:
答案 1 :(得分:0)
这与Java规范有很大关系。 规则说如果你将一个类声明为public,那么该类所在文件的名称必须具有相同的名称。
但是,如果您在定义班级时未指定公共修饰符,则同样的规则也不适用。所以你可以使用任何类名保存文件。
在您的情况下违反规则1。
有关详细信息:请参阅以下答案: Why are filenames in Java the same as the public class name?
由于有两个主要方法,Eclipse将提示您使用main方法执行的类。在当前的课程中。