这个程序在同一台机器上的eclipse中编译和运行,但我真的很想从命令行和我选择的编辑器中工作。
CollectNewspaperKarel.java
import stanford.karel.*;
public class CollectNewspaperKarel extends SuperKarel {
public void run() {
// You fill in this part
}
}
karel.jar与上面的文件位于同一目录中。
编译
javac -cp karel.jar CollectNewspaperKarel.java
没有错误。
生成
java -cp karel.jar CollectNewspaperKarel
Exception in thread "main" java.lang.NoClassDefFoundError: CollectNewspaperKarel
Caused by: java.lang.ClassNotFoundException: CollectNewspaperKarel
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
答案 0 :(得分:1)
在运行程序时,您忘记将类包含在classpath中。
试试这个 - 如果在Windows上运行:
java -cp karel.jar;CollectNewspaperKarel.class CollectNewspaperKarel
或者,如果你在linux上运行:
java -cp karel.jar:CollectNewspaperKarel.class CollectNewspaperKarel
然而,还有一件事,你需要在你的班级中使用main方法,否则它将不起作用:)
<强>更新强>
我找到了以下网站:http://ycsoftware.net/setting-up-karel-the-robot-in-eclipse/
看来,如果你有与作者相同版本的karel,你应该使用以下参数:
在Windows上:
java -cp karel.jar;CollectNewspaperKarel.class stanford.karel.Karel code=CollectNewspaperKarel
在linux上:
java -cp karel.jar:CollectNewspaperKarel.class stanford.karel.Karel code=CollectNewspaperKarel
答案 1 :(得分:1)
Peter B.是对的,但是你无法单独运行一个包含“run”方法的类,你需要一个public static void(String [] args)方法来使它可以运行。
我认为在Eclipse中,其他一些类被用作运行该东西的“主类”。