我正在尝试使用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。
我确信这是微不足道的事情,但我对这些事情缺乏经验。
答案 0 :(得分:2)
您需要设置类路径,以便jvm能够找到所有资源,如类,文件,罐等。
在您的情况下,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
应该解决你的问题。我建议你搜索设置类路径并继续阅读。
答案 1 :(得分:0)
这是错误的
我的类名为ArrayListError.java,位于 /家庭/埃利泽/桌面/ myclasses。
您的ArrayListError.java是源代码,但java虚拟机在其类路径中需要一个已编译的类。
编辑: 既然你说你也有.class文件,那么你的问题可以通过两种方式解决
一个。没有包
运行命令(照顾--testclas,它不是目录,应该是类)
java -ea -classpath randoop.1.3.2.jar:/ home / eliezer / myclasses randoop.main.Main gentests --testclass = ArrayListError
湾包中的类
如果您的ArrayListError确实package com.test;
在 myclasses 目录中创建目录/ com / test并运行以下命令
java -ea -classpath randoop.1.3.2.jar:/ home / eliezer / myclasses / com / test / randoop.main.Main gentests --testclass = com.test.ArrayListError
答案 2 :(得分:0)
在命令行上检查您的类路径;
我看到home/eliezer/myclasses
,没有前导/
。