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
без ведущих /
,