我的文件名是 Temp.java,里面有这个。我正在使用 Eclipse IDE
/*package*/ class Test {
public static void main(String args[]) {
System.out.println("test");
}
}
所以我无法将它作为 java 应用程序运行。我将班级名称更改为 Temp
class Temp {
....
}
现在我能。有人可以解释一下为什么吗?
这可能是 Eclipse 的限制。代码从命令行运行良好。
据我了解,您正在尝试将单元测试与被测类嵌入到同一个文件中。这是个好主意,我完全同意。您可以在Ben J. Christensen 的博客文章中阅读更多关于如何取得成功的信息。通常,他建议将测试放在静态内部类中,而不是放在同一文件中的独立类中。
来自 Netflix Hystrix 框架的示例:HystrixCircuitBreaker.UnitTest
文件中的类(main
应该运行).java
必须与文件同名。如果该类不是公共的(如您的情况),则该类将编译但无法运行,因为 Eclipse 尝试根据文件名加载该类。
下面的代码位于 中Temp.java
,可以在 Netbeans 中正常编译和运行:
class Whatever {
public static void main(String[] args) {
System.out.println("hello");
}
}
问题出在 Eclipse 上,我认为您正在尝试运行 using right click -> run as -> Java Application
,不幸的是,如果课程不公开,则 Eclipse 不会显示此选项。但是您仍然可以使用Alt+Shift+X,J
. 它不是 Java 的问题,而是 Eclipse 的问题。
文件名应与公共类名相同,并具有 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