带有类名和文件名的main方法

时间:2012-12-06 11:36:03

标签: java eclipse main

我的文件名是Temp.java,在里面我有这个。我正在使用eclipse IDE

/*package*/ class Test {
    public static void main(String args[]) {
        System.out.println("test");
    }
}

所以我无法将其作为java应用程序运行。我将我的班级名称更改为Temp

class Temp {
 ....
}

现在我可以。有人能解释我为什么吗?

5 个答案:

答案 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