获取“线程中的异常”主“java.lang.NoSuchMethodError:main”?

时间:2011-11-23 05:48:30

标签: java exception nosuchmethoderror

  

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

我是Java的新手,我在执行以下代码时无法弄清楚为什么会得到NoSuchMethodError: main。我不确定NoSuchMethodError与...有什么关系。看起来我说得对。请帮帮我。非常感谢。

public class ThreadExample1 extends Thread 
 {
    static String[] msg = {"Java", "programming", "is", "the", "best"};
    public ThreadExample1(String id) 
    {
       super(id);
     }
    @Override
    public void run() 
        {
         try 
           {
             Output.displayList(getName(), msg);
            } 
    catch (InterruptedException ex) 
        {

        }
    }
  }

class Output 
 {
  public static void displayList(String name, String list[]) throws InterruptedException 
   {
     for (int i = 0; i < list.length; i++) 
    {
          Thread.currentThread().sleep((long) (3000 * Math.random()));
          System.out.println(name + list[i]);
         }
    }
   public static void main(String[] args) 
    {
         ThreadExample1 thread1 = new ThreadExample1("thread1: ");
         ThreadExample1 thread2 = new ThreadExample1("thread2: ");
         thread1.start();
         thread2.start();
         boolean t1IsAlive = true;
         boolean t2IsAlive = true;
         do 
          {
          if (t1IsAlive && !thread1.isAlive()) 
            {
              t1IsAlive = false;
              System.out.println("t1 is dead.");
             }
          if (t2IsAlive && !thread2.isAlive()) 
            {
              t2IsAlive = false;
              System.out.println("t2 is dead.");
              }
           }while (t1IsAlive || t2IsAlive);
     }
}

4 个答案:

答案 0 :(得分:1)

将文件另存为ThreadExample1.java并进行编译。之后,您应该运行Output课程而不是ThreadExample1课程。这是因为您在main课程中添加了Output方法。但是,由于您已将ThreadExample1.java类设为public,因此必须使用该名称(javac ThreadExample1.java)进行保存和编译。之后java Output

答案 1 :(得分:1)

请查看main()Output类中的代码段。

使用以下命令行启动Output.main()方法:

c:\>java Output

答案 2 :(得分:1)

编译和执行上面的代码没有任何问题...请记住,当你想要执行它时,你需要使用这个命令行:

java Output

java ThreadExample1

因为main方法在Output calss中而不在ThreadExample1中...

答案 3 :(得分:0)

编译java程序时,需要在javac之后给出文件名。

喜欢javac MyProgram.java

当你使用java运行它时,你需要提到具有“public static void main(String args [])”方法的类的名称。

说我在MyProgram.java中有两个类:Class First和Class Second

我在Class Second中有“public static void main(String args [])”然后我将执行以下操作:

javac MyProgram.java
java Second