Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ClassLoader,import,java -jar, проблема с загрузкой классов java -jar 
V
    Опции темы
esi
Дата 8.6.2009, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 6.3.2009

Репутация: нет
Всего: нет



Есть небольшое приложение с использованием сторонних библиотек (например log4j.jar), упакованное в main.jar. Использованные в main.jar библиотеки (например log4j.jar) находятся рядом, используются через import org.apache.log4j.Logger;.  

Необходимо предоставить простой механизм запуска java -jar, без возникновения NoClassDefFoundError. Любая попытка передачи параметра -cp либо добавление в Manifest атрибута Class-Path игнорируются.

Вопрос: можно ли это осуществить, или необходимо отказаться от import в пользу динамической загрузки Class.forName? Как лучше всего реализовать идею?

Это сообщение отредактировал(а) esi - 8.6.2009, 17:04
PM MAIL   Вверх
tux
Дата 8.6.2009, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 31
Всего: 132



Что значит игнорируется? Значит неправильно указаны подгружаемые библиотеки. Если планируется запускать приложение используя Main-Class в манифесте, тогда и библиотеки нужно указывать в манифесте. Если класс задается в командной строке, то и библиотеки должны быть перечислены в -cp в командной строке. Сейчас как это делается?
PM MAIL Skype GTalk Jabber YIM   Вверх
esi
Дата 8.6.2009, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 6.3.2009

Репутация: нет
Всего: нет



Запуск через java -jar -cp: java -cp log4j.jar -jar main.jar
программа запускается, почти сразу после этого падает с ошибкой java.lang.NoClassDefFoundError: org/apache/log4j/Logger, насколько я помню, при запуске java -jar параметр -cp игнорируется. 

При указании Class-Path все работает, действительно неправильно указал имя файла. 

PM MAIL   Вверх
tux
Дата 8.6.2009, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 31
Всего: 132



Цитата(esi @  8.6.2009,  17:56 Найти цитируемый пост)
насколько я помню, при запуске java -jar параметр -cp игнорируется. 

Совершенно верно. если запускать таким образом, то classpath берется из манифеста. Если запустить так, то все должно работать:
Цитата

java -cp log4j.jar:main.jar some.package.MyClass


PM MAIL Skype GTalk Jabber YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0810 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.