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

ただし、もう1つ、クラスに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
于 2012-08-27T21:50:40.183 に答える
1

Peter B. は正しいですが、「run」メソッドを含むクラスを単独で実行することはできません。実行可能にするには public static void(String[] args) メソッドが必要です。

Eclipseでは、他のクラスが「メインクラス」として使用されて実行されると思います。

于 2012-08-27T21:53:21.023 に答える