Java Classpath error-cannot find my class

蓝咒 提交于 2019-12-08 06:45:55

问题


I am trying to use randoop(automatic test generator for Java) and randoop cannot find my class:

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

My class is called ArrayListError.java and is found in /home/eliezer/Desktop/myclasses.

The randoop docs are found at: https://randoop.github.io/randoop/manual/index.html.

I am sure it is something really trivial but I'm inexperienced with these things.


回答1:


You need to set your classpath such that, jvm should be able to locate all your resources like classes, files, jars etc.
In your case, ArrayListError is placed under directory /home/eliezer/Desktop/myclasses. You need to place this in your classpath. Once you point your classpath to mentioned directory, You need to pass the class name to --testclass=ArrayListError.

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

should fix your problem. I suggest you to search on setting classpath and read on.




回答2:


Check your classpath on the command line; I see home/eliezer/myclasses, without the leading /.




回答3:


This is wrong

my class is called ArrayListError.java and is found in /home/eliezer/Desktop/myclasses.

Your ArrayListError.java is the source code, but java virtual machine needs a compiled class in its classpath.

EDIT: Since you said that you have the .class file also, then your problem can be solved in two ways

a. No package

Run the command (take care of the --testclas, it is not directory, it should be the class)

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

b. Class in a package

If your ArrayListError does have package com.test; make a directory /com/test in your myclasses directory and run the command below

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



来源:https://stackoverflow.com/questions/11760484/java-classpath-error-cannot-find-my-class

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!