![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Proger89 |
|
||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 13.12.2007 Репутация: нет Всего: нет |
Доброго времени суток.
У меня довольно избитая проблема. Но я в упор не понимаю, что я делаю не так. У меня есть приложение которое использует библиотелку log4j. Перед её запуском я устанавливаю CLASSPATH командой
Вот код программы:
В pom.xml я устанавливаю Main-Class для генерации манифеста
После этого запуская свой jar файл
Почему так получается, если CLASSPATH установлен и содержит нужный jar файл и все от чего данный файл зависит написано в MANIFEST? Заранее благодарен |
||||||||
|
|||||||||
jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
А в pom.xml у Вас log4j описан как зависимость (dependency)?
-------------------- Opinions are like assholes — everybody has one |
|||
|
||||
Proger89 |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 13.12.2007 Репутация: нет Всего: нет |
Да описан. Вот:
А вот что генерирует Maven в манифесте
|
||||
|
|||||
Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 9 Всего: 39 |
в начале функции main вызовете следующую команду
System.out.println(System.getProperty("java.class.path")); убедитесь, что java действительно подцепила classpath |
|||
|
||||
Skipy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 487 Регистрация: 24.8.2006 Где: Москва, Россия Репутация: 6 Всего: 16 |
Команда java -jar игнорирует любые установки classpath - что через командную строку, что через переменную окружения CLASSPATH.
http://download.oracle.com/javase/6/docs/t...ndows/java.html - опция -jar:
В этом случае все зависимости должны быть прописаны в манифесте, в разделе Class-Path, и только в относительных путях. Вот тут расписано, как работать с jar-файлами: http://download.oracle.com/javase/tutorial.../jar/index.html P.S. Использование CLASSPATH - вообще не лучшее решение. |
|||
|
||||
Proger89 |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 13.12.2007 Репутация: нет Всего: нет |
Все. Проблема решилась.
Дело в том, что при запуске jar файла java не ищет другие jar-ники в установленном в системе CLASSPATH она проверяет только то что написано в манифесте. А в манифесте написано:
то есть оно будет в текущей директории искать папку log4j и дальше по пути, а так как её не было, оно выбрасывало исключение. Но все таки... Почему если я указал зависимости мавену, почему он сам не скопировал нужные библиотеки? Добавлено через 2 минуты и 16 секунд
Спасибо за ответ и за ссылки. ![]() Но разве Maven не должен делать эту работу? То есть устанавливать Class-Path в jar-нике и складывать нужные ему библиотеки? |
||||
|
|||||
Skipy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 487 Регистрация: 24.8.2006 Где: Москва, Россия Репутация: 6 Всего: 16 |
Сложно сказать. Maven - это вообще вещь в себе. При создании war - да, он все копирует. А вот с простым приложением - боюсь, надо дополнительные телодвижения делать, типа создания binary-with-dependencies артефакта. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |