6

当我在 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)

啊!但这让我回到了我开始的地方。如何定义 main 方法以免收到任何错误或警告?

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

4

4 回答 4

15

不要打电话给你的班级main,但是Main

一般来说,坚持 Java 编码标准:类名以大写(Main而不是main)开头,您不会遇到这些问题。

于 2013-04-26T15:35:28.930 回答
5

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

于 2013-04-26T15:36:07.460 回答
3

将您的班级名称从更改mainMain或更改为其他名称。此外,遵循JavaBean API 规范,您的类必须采用 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!");
    }
}

或者更好的是,更改类的名称。

于 2013-04-26T15:35:49.140 回答
1

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

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

于 2013-04-26T15:36:05.333 回答