如何在Java中定义main(String [] args)而不会收到警告和错误?

时间:2013-04-26 15:32:34

标签: java eclipse warnings main

当我在Eclipse项目的默认包中创建一个新的main.java文件时,它会生成一个main方法,如下所示:

public static void main(String[] args)
{
}

这会立即发出警告This method has a constructor name。建议的解决方法是删除void

public static main(String[] args)
{
}

现在而不是警告,我收到错误:Illegal modifier for the constructor in type main; only public, protected & private are permitted。如果我删除static,我的代码现在看起来像:

public main(String[] args)
{
}

这一次,我仍然收到错误,但另一个错误是:

Error: Main method not found in class main, please define the main method as:
    public static void main(String[] args)

Argggh!但这让我回到了我开始的地方。如何定义主方法以便我不会收到任何错误或警告?

我正在使用 Eclipse Juno Service Release 2 JavaSE-1.7 。请注意,我对Java很新;我来自C#背景。此外,这可能是一个重复的问题,但我找不到它。

4 个答案:

答案 0 :(得分:14)

请勿致电您的班级main,而是Main

一般来说,坚持使用Java编码标准:使用大写(Main而不是main)启动类名称,并且不会遇到这些问题。

答案 1 :(得分:5)

如果您将文件命名为main.java,则该类必须也被命名为main,这与标准(类以大写字母开头)有关,但可能。在类中,与类相同的方法被视为构造函数。因此,要解决您的问题并符合标准,请将您的类和文件重命名为Main,并使用大写“M”

答案 2 :(得分:3)

将您的班级名称从main更改为Main或其他名称。此外,在JavaBean API specification之后,您的班级必须在CamelCase中,首字母为大写。

与问题不是100%相关,但您也不应该创建具有Java JDK类名称的类,例如String

public class String {
    public static void main(String[] args) {
        System.out.println("Try to execute this program!");
    }
}

这不仅会给编译器/ JVM带来问题,也会给未来的读者带来问题(请记住,您也是自己代码的未来读者)。

注意:要修复上面的代码,只需使用其全名引用java.lang.String类:

public class String {
    public static void main(java.lang.String[] args) {
        System.out.println("Try to execute this program!");
    }
}

甚至更好,更改班级的名称。

答案 3 :(得分:1)

在java中,类名和文件名必须匹配。如果你有一个名为main.java的文件,那么类名也必须是Main,在这种情况下,构造函数方法将命名为main,所以你不能有一个main方法。

将文件和类名更改为main以外的名称。