【问题标题】:Exception in thread "main" java.lang.NoSuchMethodError: main [duplicate]线程“main”中的异常 java.lang.NoSuchMethodError: main [重复]
【发布时间】:2010-08-22 03:58:26
【问题描述】:

可能重复:
Exception in thread “main” java.lang.NoSuchMethodError: main

我收到了上述消息。代码如下:

class Test
{
 public static void main(String ar[])
 {
  printf("hai");
 }
}

这个问题是怎么引起的,我该如何解决?

【问题讨论】:

  • 我很困惑,你是怎么编译的?我的测试:Sandbox.java:27: cannot find symbol symbol : method printf(java.lang.String)
  • @Lord:这仅证实了我的怀疑,即他没有执行他认为正在执行的课程:)

标签: java exception


【解决方案1】:

您尝试执行的类没有main 方法。

由于您的 main 方法在语法上看起来不错,这可能有两个原因:

  1. 你执行了错误的类。
  2. 实际的类文件不包含此代码。

解决办法很明显:

  1. 确保您的命令指向正确的类文件,您可能有多个同名的类文件并且位于错误的目录中。
  2. 请确保您之前已将正确的源文件编译到正确的类文件中,您可能已经编辑了一个和另一个而忘记重新编译。

【讨论】:

  • 现在我明白你在其他 cmets 中的意思了。
【解决方案2】:

除了导致当前异常的问题(参见 BalusC 的回答),Java 中正确的“Hello World”是:

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

见:java.lang.System

【讨论】:

  • 这只会导致不同异常他让main运行。
  • 正常的约定是顺便把大括号放在类型声明上:)
  • 从基本的arrays tutorial: 然而,惯例不鼓励这种形式;括号标识数组类型,并应与类型名称一起出现。
  • @Balus 哦 NVM,我以为你的意思是花括号。在class Test {。我只是复制并粘贴了 OP 的代码,没有更改括号。答案已编辑。
【解决方案3】:

我看到你的问题,签名不正确。 应该是 public static void main(String[] args)

【讨论】:

  • 观察良好,但不是原因。
  • 它是语法正确的。
  • @trashgod :我也是Java新手,不知道可以这样写。在 C# 中它应该是非法的。
  • 是的,Java 可以让你做这样奇怪的事情,虽然它通常不会被看到
  • 可以,但不鼓励。请参阅 BalusC 对我的回答的评论
【解决方案4】:

这也可能是一个类路径问题,它会导致 Eclipse 在尝试运行它时感到困惑并且无法找到您的类。我会查看项目属性中的 Java 构建路径以确保没有错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-20
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多