Search code examples
javaclasspathrandoop

Java Classpath error-cannot find my class


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.


Solution

  • 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.