我的文件名是Temp.java,在里面我有这个。我正在使用eclipse IDE
/*package*/ class Test {
public static void main(String args[]) {
System.out.println("test");
}
}
所以我无法将其作为java应用程序运行。我将我的班级名称更改为Temp
class Temp {
....
}
现在我可以。有人能解释我为什么吗?
答案 0 :(得分:6)
这可能是Eclipse的限制。代码在命令行中运行良好。
据我了解,您正在尝试将单元测试嵌入到被测试类的同一文件中。这是一个好主意,我完全赞同它。您可以在Ben J. Christensen's blog post中详细了解如何取得成功。通常,他建议将测试放在静态内部类中,而不是同一文件中的独立类。
Netflix Hystrix框架中的一个示例:HystrixCircuitBreaker.UnitTest
答案 1 :(得分:1)
main
文件中的类(.java
应该运行)必须与文件同名。如果该类不是公共的(在您的情况下),则该类将编译但由于Eclipse尝试根据文件名加载该类,因此无法运行该类。
答案 2 :(得分:1)
下面的代码位于Temp.java
,可以编译并运行Netbeans:
class Whatever {
public static void main(String[] args) {
System.out.println("hello");
}
}
答案 3 :(得分:1)
问题在于eclipse,我认为你试图使用right click -> run as -> Java Application
运行,不幸的是,如果该类不公开,eclipse不会显示此选项。
但您仍然可以使用Alt+Shift+X,J
运行该类。
这不是Java的问题,而是Eclipse。
答案 4 :(得分:1)
文件的名称应与public名称相同,并且具有main()方法。在第一种情况下,文件名Temp.java将编译并将创建Test.class文件而不是Temp.class,因为在您的文件中没有声明Temp类。
创建.class文件后,使用java Test
所以这是一个例子
//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