java - 如何用命令行编译并运行Stanford的Karel?

标签 java command-line

这个程序可以在同一台机器上的 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/

相关文章:

java - 有没有更清晰的方法来处理短暂的选项?

java - 如何将 String.split 与文本文件一起使用以添加到简单数组

Azure 暂存 Web 部署失败,并显示 ERROR_USER_NOT_AUTHORIZED_FOR_CREATEAPP 但不适用于生产

macos - ./configure --with-ssl=openssl 的含义

java - Mysql 5.5 与 hibernate 4 order by 不一致

java - dockerBuild 失败导致不支持的类文件主要版本 61 错误

java - 在 weblogic 中创建外部 JNDI 设置并从 Java 客户端查找

powershell - 在 PowerShell 脚本中使用 Get-Help 时出现问题

mysql - PHP Mysql laravel 5.4终端问题

bash - 为什么在 bash 中使用管道命令与 && 连接命令时得到不同的结果?