1

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.

vinegarbin
  • 120
  • 1
  • 7
E Shindler
  • 425
  • 7
  • 27
  • `home.eliezer.Desktop.myclasses` is your package or directory structure? – RP- Aug 01 '12 at 13:39
  • @Rp its a directory structure-I am only testing a single class and it is in /home/eliezer/myclasses and its name is ArrayListError.java – E Shindler Aug 01 '12 at 13:42
  • then you need to set classpath to `home/eliezer/Desktop/myclasses` ('Desktop' is missing in your classpath) and you need to call `classForName("ArrayListError");` – RP- Aug 01 '12 at 13:45
  • @Rp I have done that now-still the error. How and where do I call classForName("ArrayListError") Thanks – E Shindler Aug 01 '12 at 13:49
  • 1
    Try `java -ea -classpath randoop.1.3.2.jar:/home/eliezer/Desktop/myclasses randoop.main.Main gentests --testclass=ArrayListError` – RP- Aug 01 '12 at 14:01
  • Posted the comment as answer :-) – RP- Aug 01 '12 at 14:26
  • @Rp- sorry that I did not see your comment before posting. – Serkan Arıkuşu Aug 01 '12 at 14:45

3 Answers3

2

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.

RP-
  • 5,827
  • 2
  • 27
  • 46
1

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

Serkan Arıkuşu
  • 5,549
  • 5
  • 33
  • 50
0

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

Richard Sitze
  • 8,262
  • 3
  • 36
  • 48
  • And you added Desktop into the path? It's all a bit confusing at this point. – Richard Sitze Aug 01 '12 at 14:06
  • eliezer@ubuntu:~/Desktop$ java -ea -classpath randoop.1.3.2.jar:/home/eliezer/Desktop/myclasses randoop.main.Main gentests --testclass=/home/eliezer/Desktop/myclasses/ArrayListError – E Shindler Aug 01 '12 at 14:10