2010-03-22 105 views
0

当我尝试编译此:异常线程 “main” java.lang.NoSuchMethodError:主要

public class Risk 
{ 
} 
class territory 
{ 

    public static void main (String[]arg) 
    { 
     System.out.println ("hi") ; 
    } 
} 

我收到此错误信息:

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

怎么回事错在这里?

+0

此社区Wiki问题列出了此常见问题的可能原因:http://stackoverflow.com/questions/5407250/causes-of-java-lang-nosuchmethoderror-main-exception-in-thread-main – 2011-06-28 14:37:27

回答

0

答案清盘正在什么是我运行的类必须包含main否则它赢得没有工作。我发布这个,因为,虽然其他答案给出了大致相同的信息,但他们并没有明确表示。

1

你想要跑什么课?如果您正在使用类territory,那将起作用。但是,Risk没有main方法。

3

包含main()函数的类必须是公共的,并且每个文件只能定义一个公共类。你会想要有两个单独的文件Risk.javaTerritory.java

Risk.java:

public class Risk { 
} 

Territory.java:

public class Territory 
{ 

    public static void main (String[]arg) 
    { 
     System.out.println ("hi") ; 
    } 
} 

编辑:原来,这是不正确 - 我能够用下面的命令行运行您的初始代码:

java territory 

但我早些时候的评论指出了一个真正的应用程序,如风险游戏的最佳做法。

-1

难道这只是一个间距问题?您原来的帖子显示']'和'arg'之间没有空格。

试试这个:

public static void main (String[] arg) 

或者,如果仍然不能正常工作:

public static void main (String arg[]) 
+3

-1不,这两个都是非重要的考虑因素。 (通常我不会对帖子进行降级,但是那些表明格式更改会带来差异的帖子会对此语言产生深刻的误解。) – 2010-03-22 22:03:30

+0

答案可能是错误的,但并不意味着深刻的误解。空白是重要的。 – 2010-03-22 22:25:00

+1

@阿德里安:有时候,是的。 ('class Foo'与'classFoo'不同)。其他时候,比如这里,没有。知道什么时候有所作为是一个有能力的程序员的标志。 – 2010-03-22 22:44:58

0

你能弄清楚为什么这个例子导致同样的问题?

public class Simple { 
    public void main(String args[]) { 
     System.out.println("Inside function"); 
    } 
} 

答:主要是因为()应该是公开的静态无效!

相关问题