Java Classpath错误 – 无法找到我的类

我试图使用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

应该解决你的问题。 我建议你搜索设置classpath并继续阅读。

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

这是错的

我的类名为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确实有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