Java类路径错误找不到我的类

Java类路径错误找不到我的类,java,classpath,randoop,Java,Classpath,Randoop,我正在尝试使用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.pr

我正在尝试使用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/Elizer/Desktop/myclasses
中找到

randoop文档位于:

我确信这是一件非常琐碎的事情,但我对这些事情缺乏经验

这是错误的

我的类名为ArrayListError.java,可以在中找到 /home/Elizer/Desktop/myclasses

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

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

a。没有包裹

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

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

b。封装类

如果您的ArrayListError确实有
包com.testmyclasses目录中创建一个目录/com/test,然后运行下面的命令

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


在命令行上检查类路径;
我看到
home/eliezer/myclasses
,如果没有前面的
//code>,您需要设置类路径,以便jvm能够找到所有资源,如类、文件、JAR等。
在您的情况下,
ArrayListError
位于目录
/home/elizer/Desktop/myclasses
下。您需要将其放置在类路径中。 将类路径指向上述目录后,需要将类名传递给
--testclass=ArrayListError

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


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

home.elizer.Desktop.myclasses
是您的包还是目录结构?@Rp这是一个目录结构-我只测试一个类,它位于/home/elizer/myclasses中,名称为ArrayListError.java,然后您需要将类路径设置为
home/eliezer/Desktop/myclasses
('Desktop'在您的类路径中丢失),您需要调用
classForName(“ArrayListError”)@Rp我已经做了,现在仍然是错误。如何以及在何处调用classForName(“ArrayListError”)Thanksry
java-ea-classpath randoop.1.3.2.jar:/home/eliezer/Desktop/myclasses randoop.main.main gentests--testclass=ArrayListError
我认为我不需要创建jar文件您不需要创建jar,只要编译包层次结构的根目录在类路径上,也就是在/home/elizer/Desktop/myclasses中,并且您将Desktop添加到了路径中?在这一点上,一切都有点混乱。eliezer@ubuntu:~/Desktop$java-ea-classpath randoop.1.3.2.jar:/home/eliezer/Desktop/myclasses randoop.main.main gentests--testclass=/home/eliezer/Desktop/myclasses/arraylisteror在您的回复中提到对--testclass的更改,这非常相关。接得好。