1

randoop (Java 用の自動テスト ジェネレーター) を使用しようとしていますが、randoop でクラスが見つかりません。

eliezer@ubuntu:~/Desktop$ java -ea -classpath \
 randoop.1.3.2.jar:home/eliezer/myclasses \
 randoop.main.Main gentests \
 --testclass=/home/eliezer/Desktop/myclasses/ArrayListError

policy = sun.security.provider.PolicyFile@85af80
Throwable thrown while handling command:java.lang.Error:\
classForName(/home/eliezer/Desktop/myclasses/ArrayListError)
java.lang.Error: classForName(/home/eliezer/Desktop/myclasses/ArrayListError)
at randoop.util.Reflection.classForName(Reflection.java:206)
at randoop.util.Reflection.loadClassesFromList(Reflection.java:386)
at randoop.main.GenInputsAbstract.findClassesFromArgs(GenInputsAbstract.java:507)
at randoop.main.GenTests.handle(GenTests.java:184)
at randoop.main.Main.nonStaticMain(Main.java:80)
at randoop.main.Main.main(Main.java:42)
Caused by: java.lang.ClassNotFoundException: \
 /home/eliezer/Desktop/myclasses/ArrayListError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at randoop.util.Reflection.classForName(Reflection.java:198)
... 5 more
Randoop failed.
Last sequence under execution:null

私のクラスは ArrayListError.java と呼ばれ、/home/eliezer/Desktop/myclasses.

randoop のドキュメントはhttps://randoop.github.io/randoop/manual/index.htmlにあります。

それは本当に些細なことだと確信していますが、私はこれらのことについて経験がありません。

4

3 に答える 3

2

jvm がクラス、ファイル、jar などのすべてのリソースを見つけることができるように、クラスパスを設定する必要があります。
この場合、ArrayListErrordirectory の下に配置され/home/eliezer/Desktop/myclassesます。これをクラスパスに配置する必要があります。クラスパスを上記のディレクトリに指定したら、クラス名をに渡す必要があります--testclass=ArrayListError

java -ea -classpath randoop.1.3.2.jar:/home/eliezer/Desktop/myclasses randoop.main.Main gentests --testclass=ArrayListError

問題を解決する必要があります。クラスパスの設定を検索して読み進めることをお勧めします。

于 2012-08-01T14:25:40.597 に答える
0

コマンドラインでクラスパスを確認してください。なるほどhome/eliezer/myclasses、先頭の なし/

于 2012-08-01T13:55:36.377 に答える
0

これは間違っています

私のクラスは ArrayListError.java と呼ばれ、/home/eliezer/Desktop/myclasses にあります。

ArrayListError.java はソース コードですが、Java 仮想マシンのクラスパスにはコンパイル済みのクラスが必要です。

編集:.classファイルも持っていると言ったので、問題は2つの方法で解決できます

を。パッケージなし

コマンドを実行します (--testclas に注意してください。これはディレクトリではなく、クラスである必要があります)。

java -ea -classpath randoop.1.3.2.jar:/home/eliezer/myclasses randoop.main.Main gentests --testclass=ArrayListError

b. パッケージ内のクラス

ArrayListError がmyclassespackage com.test;ディレクトリにディレクトリ /com/test を作成し、以下のコマンドを実行する場合

java -ea -classpath randoop.1.3.2.jar:/home/eliezer/myclasses/com/test/ randoop.main.Main gentests --testclass=com.test.ArrayListError

于 2012-08-01T13:43:26.050 に答える