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 等。
在您的情况下,ArrayListError位于 directory 下/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

这是错误的

我的类名为 ArrayListError.java,位于 /home/eliezer/Desktop/myclasses 中。

您的 ArrayListError.java 是源代码,但 java 虚拟机在其类路径中需要一个已编译的类。

编辑:既然你说你也有 .class 文件,那么你的问题可以通过两种方式解决

一种。无包裹

运行命令(注意--testclas,它不是目录,应该是类)

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

湾。包中的类

如果您的 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 回答
0

在命令行上检查你的类路径;我看home/eliezer/myclasses,没有领先/

于 2012-08-01T13:55:36.377 回答