2011-11-23 99 views
1

Possible Duplicate:
Exception in thread “main” java.lang.NoSuchMethodError: main获取“线程中的异常”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); 
    } 
} 
+2

你在命令提示符下尝试的内容; java的ThreadExample1或Java输出? – Naved

+3

如果您正在运行'java ThreadExample1'的一些变体,那么这很有意义,因为'main'在'Output'中。如果你正在运行'java output',那么有些东西很奇怪,因为这应该是有效的。 –

+0

@Naved:我在做javac ThreadExample1.java(即文件名)。然后,我正在做java ThreadExample1 – indolent

回答

1

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

java Output 

java ThreadExample1 

因为该方法主要是输出CALSS内,而不是在ThreadExample1 ...

+0

非常感谢! – indolent

1

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

+0

非常感谢! – indolent

1

看看代码片段main()方法是在Output类。

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

c:\>java Output 
+0

非常感谢你! – indolent

0

当你编译你需要的javac后得到的文件名的Java程序。

像javac的MyProgram.java

当你这样做使用Java运行它,那么你需要一提的是有“公共静态无效的主要(字符串ARGS [])”方法的类的名称。

说我有在MyProgram.java两类:第一类和第二类

,我有“公共静态无效的主要(字符串ARGS [])”在第二级之后我会做到以下几点:

javac MyProgram.java 
java Second 
相关问题