Java: ClassNotFoundException для класса из внешнего jar, создаваемого в потоке - PullRequest
0 голосов
/ 01 февраля 2012

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

ClassNotFoundException (Throwable). (String, Throwable): 217 ClassNotFoundException (Exception). (String, Throwable) строка: недоступно ClassNotFoundException. (String) строка: недоступно
URLClassLoader $ 1.run () строка: недоступно
AccessController.doPrivileged (PrivilegedExceptionAction, AccessControlContext): недоступно [собственный метод] Launcher $ ExtClassLoader (URLClassLoader) .findClass (String) строка: недоступно Launcher $ ExtClassLoader.findClass (String) строка: недоступно Launcher $ ExtClassLoader (ClassLoader) .loadClass (String, boolean) строка: нетдоступно
Линия запуска $ AppClassLoader (ClassLoader) .loadClass (String, boolean): недоступно Линия запуска $ AppClassLoader.loadClass (String, boolean): недоступно
Линия запуска $ AppClassLoader (ClassLoader) .loadClass (String): нет в наличии HKServiceListener.run () строка: 33 Thread.run () строка: недоступно

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

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

Ответы [ 3 ]

1 голос
/ 01 февраля 2012

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

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

Дляпример:

java -cp /libs/lib1.jar:/libs2/* com.your.Class
0 голосов
/ 03 февраля 2012

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

0 голосов
/ 01 февраля 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...