可能重复:
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);
}
}
答案 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