3

我在使用一个简单的 hello world 程序时遇到了麻烦,哈哈!我希望有人可以对此有所了解。

所以我收到的错误如下:

$ javac Hello.java
$ java Hello
Exception in thread "main" java.lang.NoSuchMethodError: main

因此,通过错误,我可以看到它显然缺少 main,但它就在那里:

class Hello
{
  public static void main(String argv)
  {
    System.out.println("hello world");
  }
}

如果有帮助,我在 Mac OS/X 上。

4

7 回答 7

10

问题是您的方法没有将 String 数组作为参数。请改用以下签名:

public static void main(String[] argv)

或者

public static void main(String argv[])

其他有效选项是:

public static void main(String ... argv)

在 Java 语言规范中是这样描述的:

方法 main 必须声明为 public、static 和 void。它必须指定一个声明类型为字符串数组的形式参数(第 8.4.1 节)。

于 2012-07-30T11:20:11.397 回答
4

您忘记输入数组语法,您甚至可以按照 JAVA 1.5 使用可变参数

public static void main(String... argv)
于 2012-07-30T11:23:35.960 回答
4

你忘了[]inString[] argv...in String... argv。该数组用于存储在为您的类创建 JVM 的命令中使用的参数,例如

java Hello argument0 argument1 argument2` 

等等。

于 2012-07-30T11:20:16.773 回答
4

Main 方法具有接受的签名,String[]而您写String的是错误的,

做了

public static void main(String[] argv)

可变参数

public static void main(String... argv)
于 2012-07-30T11:20:22.607 回答
2

问题在于main签名,应该是

public static void main(String[] argv)

或者可能是

public static void main(String ... argv) // known as varargs

而不是public static void main(String argv)你的情况

看看这个

对于可变参数外观

于 2012-07-30T11:23:39.483 回答
2
public static void main(String[] args)
public static void main(String... args)
public static void main(String args[])

Java 程序从 main 方法开始执行,该方法具有上述方法原型

于 2012-07-30T12:08:12.957 回答
1

您的主要方法签名是错误String的,而不是String []

利用

public static void main(String[] argv)

或者

public static void main(String... argv)

在这里阅读

于 2012-07-30T11:35:43.287 回答