Java 具有类名和文件名的main方法
我的文件名是Temp.java,里面有这个。我正在使用EclipseIDEJava 具有类名和文件名的main方法,java,eclipse,main,Java,Eclipse,Main,我的文件名是Temp.java,里面有这个。我正在使用EclipseIDE /*package*/ class Test { public static void main(String args[]) { System.out.println("test"); } } 所以我无法将其作为java应用程序运行。我把我的班名改成临时工 class Temp { .... } 现在我可以了。有人能解释一下原因吗?文件中的类(应该运行main)必须与文件同名。如果
/*package*/ class Test {
public static void main(String args[]) {
System.out.println("test");
}
}
所以我无法将其作为java应用程序运行。我把我的班名改成临时工
class Temp {
....
}
现在我可以了。有人能解释一下原因吗?文件中的类(应该运行
main
)必须与文件同名。如果该类不是公共类(如您的情况),则该类将编译,但无法运行,因为Eclipse尝试根据文件名加载该类。这可能是Eclipse的一个限制。代码在命令行中运行良好
据我所知,您正试图将单元测试嵌入到与被测类相同的文件中。这是个好主意,我完全同意。你可以阅读更多关于如何成功的文章。通常,他建议将测试放在静态内部类中,而不是放在同一文件中的独立类中
Netflix Hystrix框架中的一个示例:下面的代码位于
Temp.java
中,可以很好地编译和运行Netbeans:
class Whatever {
public static void main(String[] args) {
System.out.println("hello");
}
}
问题在于eclipse,我认为您试图使用
右键单击->运行方式->Java应用程序运行,不幸的是,如果类不是公共的,eclipse没有显示此选项。
但是您仍然可以使用Alt+Shift+X,J
运行该类。
这不是Java的问题,而是Eclipse的问题。文件名应该与类名相同,该类名是公共的,并且具有main()方法。在第一种情况下,文件名Temp.java将编译并创建Test.class文件而不是Temp.class,因为文件中没有声明Temp类
创建.class文件后,使用java测试运行它
下面是一个例子
//Filename abc.java
public class hi
{
public static void main(String[] args)
{
System.out.println("Hell");
}
}
输出
abc.java:1: class hi is public, should be declared in a file named hi.java
public class hi
^
1 error
但是如果你这样做
//Filename abc.java
class hi
{
public static void main(String[] args)
{
System.out.println("Hell");
}
}
它将创建hi.class文件,以便
D:\>java hi
Hell
@这与主方法和类有关name@null对不起,我错过了。值得一提的是,两者都是在Netbeans中编译的。我认为这不应该太接近,这与eclipse、文件名、类名和main方法有关。检查“assylias”的答案,它在netbeans上起作用。如果该类是公共类,则这是正确的,您可以将许多非公共类放入一个.java文件中。@null确定,它不是公共类,因此可以编译。但是您已经询问了为什么它没有运行。+1的问题在于eclipse,,,它没有显示类名和文件名是否不同,是否与public无关。