这个程序可以在同一台机器上的 Eclipse 中顺利编译和运行,但我真的很想从命令行和我选择的编辑器中工作。
收集报纸Karel.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)
最佳答案
运行程序时您忘记将您的类包含到类路径中。
试试这个 - 如果在 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
关于java - 如何用命令行编译并运行Stanford的Karel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12150041/