У меня есть JAR-файл, который имеет много зависимостей (в основном ApacheCommons). Когда я помещаю все эти JAR в тот же каталог, что и мой основной JAR, все работает нормально. Но это создает беспорядок, а также означает, что людям приходится носить с собой все эти внешние библиотеки всякий раз, когда они перемещают JAR моей программы в своей системе.
Поэтому я поместил их все в отдельный каталог и добавил путь к этому каталогу к переменной среды CLASSPATH (используя /etc/environment
). Теперь, несмотря на то, что echo $CLASSPATH
возвращает этот путь, мой JAR без этих библиотек в том же каталоге вызывает java.lang.NoClassDefFoundError
(что происходит, когда не удается найти необходимые внешние JAR).
Любая помощь / идеи будут высоко оценены.
Это на самом деле не проблема Ubuntu, см. Этот вопрос о стекопотоках.
CLASSPATH-Variable не перечисляет пути к файлам jar, но добавляет пути к файлам классов Java. Чтобы включить jav-файл в путь к классам, вы должны поместить имя файла jar-файла в путь к классам (например, CLASSPATH=/path/to/some/jar/file/jarfile.jar
).