2

该程序可以在同一台机器上的 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)
4

2 回答 2

1

您在运行程序时忘记将您的类包含到类路径中。

试试这个 - 如果在 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 版本与那里的作者相同,您应该使用以下论点:

在窗户上:

java -cp karel.jar;CollectNewspaperKarel.class stanford.karel.Karel code=CollectNewspaperKarel

在 Linux 上:

java -cp karel.jar:CollectNewspaperKarel.class stanford.karel.Karel code=CollectNewspaperKarel
于 2012-08-27T21:50:40.183 回答
1

Peter B. 是对的,但是您不能单独运行包含“运行”方法的类,您需要一个公共静态 void(String[] args) 方法使其可运行。

我想在 Eclipse 中,其他一些类被用作“主类”来运行这个东西。

于 2012-08-27T21:53:21.023 回答