1

重複の可能性:
スレッド「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

4 に答える 4

1

ファイルをThreadExample1.javaとして保存し、コンパイルします。その後、クラスを実行する必要がありますOutputが、ThreadExample1クラスは実行しないでください。これは、 クラスmain内にメソッドを追加したためです。Outputただし、ThreadExample1.javaクラスを公開したので、そのname(javac ThreadExample1.java)を使用して保存およびコンパイルする必要があります。その後java Output

于 2011-11-23T05:56:45.317 に答える
1

main()メソッドがOutputクラスにあるコードスニペットを見てください。

次のコマンドラインを使用して、Output.main()メソッドを起動します。

c:\>java Output
于 2011-11-23T05:57:08.843 に答える
1

上記のコードのコンパイルと実行に問題はありません...実行する場合は、次のコマンドラインを使用する必要があることに注意してください。

java Output

ではありません

java ThreadExample1

mainメソッドはOutputcals内にあり、ThreadExample1にはないため...

于 2011-11-23T05:57:27.640 に答える
0

Javaプログラムをコンパイルするときは、javacの後にファイル名を付ける必要があります。

javacMyProgram.javaのように

また、Javaを使用して実行する場合は、「public static void main(String args [])」メソッドを持つクラスの名前を指定する必要があります。

MyProgram.javaに2つのクラスがあるとします:クラスファーストとクラスセカンド

そして、クラスSecondに "public static void main(String args [])"があり、次のようにします。

javac MyProgram.java
java Second
于 2011-11-23T06:50:22.160 に答える