线程“main”中的exceptionjava.lang.NoSuchMethodError:main

当我尝试编译这个:

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

我收到此错误消息:

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

这里出了什么问题?

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

Risk.java:

 public class Risk { } 

Territory.java:

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

编辑:事实certificate这不是真的 – 我能够使用以下命令行运行您的初始代码:

 java territory 

但我之前的评论指出了真正的应用程序的最佳实践,例如风险游戏。

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

答案最终的结果是,我所经营的class级必须包含main ,否则它将无效。 我发布这个是因为,尽管其他答案提供了大致相同的信息,但它们并没有明确说明。

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

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

答:因为main()应该是public static void!

它只是一个间距问题吗? 您的原始post在’]’和’arg’之间没有显示空格。

尝试这个:

 public static void main (String[] arg) 

或者,如果仍然不起作用:

 public static void main (String arg[])