У меня есть странная проблема, которую я не могу понять ... У меня есть простой jar HelloWorld, который я построил в Eclipse, в котором есть Apache Loggings
jar на пути к классам.Я написал скрипт для запуска jar:
#!/bin/sh
export CLASSPATH=lib/*:$CLASSPATH
java -jar HelloWorld.jar
Структура каталогов здесь представляет собой главный каталог с подкаталогом HelloWorld.jar
и lib
, в котором содержится commons-logging-1.1.1.jar
.
* 1009.* Запуск этого скрипта работает нормально.Однако, когда я помещаю
HelloWorld.jar
в каталог
lib
(т. Е. Чтобы он содержал все JAR-файлы в одном месте) и выполняю
java -jar lib/HelloWorld.jar
, я получаю:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
error.Почему?!?!?!?!
Я спрашиваю об этом, потому что я использовал JarBundler на OSX для создания пакета приложения для приложения HelloWorld и поместил модифицированный скрипт в каталог MacOS
, тогда каквсе библиотеки находятся в каталоге Resources/Java
.Модифицированная версия скрипта:
#!/bin/sh
RESOURCE_DIR=$(cd "../Resources"; pwd)
export CLASSPATH=$RESOURCE_DIR/Java/*:$CLASSPATH
java -jar $RESOURCE_DIR/Java/HelloWorld.jar
, и я получаю ту же ошибку, что и выше, я был бы очень признателен за помощь в понимании, почему я не могу это сделать и / или как это исправить?