2012-02-01 4 views
0

Я создал библиотеку и экспортировал ее в файл jar, который я пытаюсь импортировать в проект eclipse и использовать. Затмение говорит, что нет никаких проблем, но когда я отладки приложения, он входит в новый поток и идет для создания экземпляра объекта, а затем бросает ClassNotFoundExceptionJava: ClassNotFoundException в классе из внешнего jar, создаваемого в потоке

ClassNotFoundException(Throwable).(String, Throwable) line: 217 ClassNotFoundException(Exception).(String, Throwable) line: not available ClassNotFoundException.(String) line: not available
URLClassLoader$1.run() line: not available
AccessController.doPrivileged(PrivilegedExceptionAction, AccessControlContext) line: not available [native method] Launcher$ExtClassLoader(URLClassLoader).findClass(String) line: not available Launcher$ExtClassLoader.findClass(String) line: not available Launcher$ExtClassLoader(ClassLoader).loadClass(String, boolean) line: not available
Launcher$AppClassLoader(ClassLoader).loadClass(String, boolean) line: not available Launcher$AppClassLoader.loadClass(String, boolean) line: not available
Launcher$AppClassLoader(ClassLoader).loadClass(String) line: not available HKServiceListener.run() line: 33 Thread.run() line: not available

Класс это не находя это com.snow.IO.SnowTcpServer. Я включил внешнюю банку в свой путь класса и не имею ошибок компиляции. Он срабатывает только во время выполнения. У меня даже есть import com.snow.IO.SnowTcpServer в верхней части файла, как должно.

Почему это не признает мой класс и как я могу это сделать?

+0

Вы можете указать команду, которую используете для запуска? –

+0

Я запускаю его из Eclipse. Я просто нажал кнопку «Запустить как приложение Java» –

ответ

0

Как выясняется, ошибка была вызвана только при использовании отладчика. Это связано с тем, что код, в который я входил, был во внешнем файле jar, а не в моем источнике.

1

У вас есть проблемы с путем к классам нет никакой другой причины, почему classload не может найти файл с классом, попробуйте запустить свой класс (скомпилированный класс) вручную без затмения с помощью командной строки

java -cp [your jars separated with ";" - widows or ":" - *nix] com.your.Class 

Например :

java -cp /libs/lib1.jar:/libs2/* com.your.Class 
+0

Когда я попробовал это, я получил «Исключение в потоке» main «java.lang.NoClassDefFoundError: com/hakyn/srv/HKListener». Это класс с моим основным методом. Я использовал: 'C: \ Users \ ryan \ workspace \ hakyn-server> java -cp Snow.jar; mongo-2.7.2.jar; mysql-connector-java-5.1.1.jar; C:/Users/ryan/workspace/hakyn-server/src/* com.hakyn.srv.HKListener' –

+0

Поскольку вы должны указать свой путь к компилированным классам (* .class), но не исходный код: C:/Users/ryan/workspace/hakyn-server/src/* –

+0

Ahh, я попробовал с каталогом bin. Я все равно получаю ту же ошибку. –

0

Если вы используете приложение Enterprise, убедитесь, что Jar также доступен для развертывания. Это необходимо настроить дополнительно.
В случае приложения J2SE проверьте, отображается ли ваша банка в свойствах run_configuration, вкладке classpath.

Если это не сработает, попробуйте включить файл jar в путь класса в опции run_configurations явно.

+0

jar уже находится в моем пути к классам, когда я смотрел в run_configurations. –

Смежные вопросы