Java Classpath error- не удается найти мой класс

Я пытаюсь использовать 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/eliezer/Desktop/myclasses,

Документы randoop находятся по адресу: http://randoop.googlecode.com/hg/doc/index.html.

Я уверен, что это что-то действительно тривиальное, но я неопытный с этими вещами.

3 ответа

Решение

Вам нужно установить свой путь к классу таким образом, чтобы jvm мог найти все ваши ресурсы, такие как классы, файлы, файлы jar и т. Д.
В твоем случае, ArrayListError находится в каталоге /home/eliezer/Desktop/myclasses, Вы должны поместить это в свой путь к классу. После того, как вы указали путь к классу в указанном каталоге, вам нужно передать имя класса --testclass=ArrayListError,

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

должен исправить вашу проблему. Я предлагаю вам поискать на установке classpath и читать дальше.

Это не верно

мой класс называется ArrayListError.java и находится в /home/eliezer/Desktop/myclasses.

Ваш ArrayListError.java является исходным кодом, но виртуальной машине Java необходим скомпилированный класс в своем пути к классам.

РЕДАКТИРОВАТЬ: так как вы сказали, что у вас есть файл.class, то ваша проблема может быть решена двумя способами

а. Нет пакета

Запустите команду (позаботьтесь о --testclas, это не каталог, это должен быть класс)

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

б. Класс в пакете

Если ваш ArrayListError имеет package com.test; создайте каталог / com / test в вашем каталоге myclasses и выполните команду ниже

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

Проверьте ваш путь к классу в командной строке; я вижу home/eliezer/myclassesбез ведущих /,

Другие вопросы по тегам