Java Classpath error-cannot find my class

6.6k views Asked by At

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.

3

There are 3 answers

1
RP- On BEST ANSWER

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.

3
Serkan Arıkuşu On

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

2
Richard Sitze On

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