我正在尝试使用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

我敢肯定这确实是微不足道的,但是我对这些东西没有经验。

最佳答案

您需要设置类路径,以便jvm应该能够找到所有资源,如类,文件,jar等。
对于您而言,ArrayListError放在目录/home/eliezer/Desktop/myclasses下。您需要将此放置在您的类路径中。
将类路径指向提到的目录后,需要将类名称传递给--testclass=ArrayListError

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

应该解决您的问题。我建议您搜索设置类路径并继续阅读。

10-05 21:47