【问题标题】:Exception in thread “main” java.lang.NoSuchMethodError: main // What is wrong?线程“main”中的异常 java.lang.NoSuchMethodError: main // 出了什么问题?
【发布时间】:2014-04-30 15:14:31
【问题描述】:

我有以下简单的代码:

public class Date
{
 byte day;
 byte month;
 short year;
}
 class DateUse{
  public static void main(String[] args){
   Date date = new Date();
   date.day = 15;
  System.out.println(date.day);
  }
}

我正在使用 Linux 终端来编译我的 .java 代码:

javac Date.java

在 Windows 环境下任何 IDE 都可以编译没有任何错误,为什么它在 Linux 中给我错误?

提前谢谢你。

【问题讨论】:

  • 您是否将“Date”声明为您的主要课程?
  • 你标题中的异常不是编译错误。您在 Linux 上使用什么版本的 Java,在 Windows 上使用什么版本?
  • Linux中的Java版本是- 1.6.0_27

标签: java linux terminal javac nosuchmethoderror


【解决方案1】:

听起来您尝试运行 Date 而不是 DateUse

$ javac Date.java

$ java Date
Exception in thread "main" java.lang.NoSuchMethodError: main

$ java DateUse
15

【讨论】:

    【解决方案2】:

    DateUse 设为公共类,并将其置于Date 类之前。

    将文件保存为DateUse.java并用

    编译
    javac DateUse.java
    

    DateUse 类包含 main 方法,而不是 Date

    【讨论】:

    • 不过,你总是可以合并这两个类。
    • 没问题。如果您觉得有用,请考虑将其标记为答案。
    【解决方案3】:

    您的主要方法需要在 Date 类中,因为您的文件名代表类名。您的代码应如下所示:

    public class Date{
         public byte day;
         public byte month;
         public short year;
    
         public static void main(String[] args){
    
           Date date = new Date();
           date.day = 15;
           System.out.println(date.day); 
         }
    

    }

    【讨论】:

    • 实际上是我调用了错误的类 - Date ,我应该调用 DateUse。
    猜你喜欢
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    相关资源
    最近更新 更多