我下载了一个用Java实现的程序(在本例中为http://julian.togelius.com/mariocompetition2009/index.php)。我首先尝试用Java打开Play.class文件,但它吐出一个我看不到的错误,因为控制台窗口消失得太快了。我在命令行上复制了这个,并收到以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: Play/class
Caused by: java.lang.ClassNotFoundException: Play.class
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: Play.class. Program will exit.
我需要做些什么才能让它正常运行? (如果这属于超级用户,则没关系。)
答案 0 :(得分:8)
您必须在没有.class
的情况下调用该程序java Play
而不是
java Play.class
修改强>
对问题的进一步解释
(或任何完整的班级名称)
例如,如果您有一个这样定义的类:
package a.b.c.d;
public class MyClass {
public void main( String [] args ) {
System.out.println( "Hey there");
}
}
您可以这样编译:
javac -D . MyClass.java
-D。选项用于告诉编译器在何处创建包结构。在这种情况下,它是“。” (当前目录)
这将创建以下目录结构
a\b\c\d\MyClass.class ( assuming windows )
要运行它,请使用:
java a.b.c.d.MyClass // with the full package name and wihtout the .class
请参阅this.
答案 1 :(得分:3)
来自您关联的网站:
如何参与(很简单!) 如果您计划参加,您应该加入Mario Competition Google Group。 所有技术和组织问题都应发布到此论坛,组织者将在会上回答这些问题并将其存储在可搜索的内容中。
但首先,您必须使用您选择的方法和Java软件包来开发控制器。 首先,请查看入门页面;更多技术信息即将推出。
从入门页面
java ch.idsia.scenarios.Play
换句话说:首先在网站上开始阅读,然后回到这里
答案 2 :(得分:0)
看起来像路径问题。一个简单的解决方案是将Play.java复制到java可执行文件所在的目录。更好的解决方案是在默认系统路径中添加java可执行文件的路径,并从包含Play.java的目录中调用java