11

Включение всех JAR-файлов из директории в classpath Java

16

Как включить все jar-файлы из директории в classpath?

Я пытаюсь запустить программу с помощью команды java -classpath lib/*.jar:. my.package.Program, но она не может найти классы, которые определенно есть в этих jar-файлах. Нужно ли мне добавлять каждый jar-файл в classpath отдельно?

5 ответ(ов)

2

При работе с Java под Windows вы можете использовать следующую команду:

java -cp "Test.jar;lib/*" my.package.MainClass

Однако если вы попробуете использовать:

java -cp "Test.jar;lib/*.jar" my.package.MainClass

то это не сработает. Обратите внимание, что в этом случае используется *.jar, и всё равно необходимо использовать одиночный символ * без других символов.


На Linux ситуация немного иная. Здесь вы можете использовать:

java -cp "Test.jar:lib/*" my.package.MainClass

При этом разделители между элементами путей — это двоеточия вместо точек с запятой.

0

Чтобы обойти эту проблему, мы развернули основной JAR файл myapp.jar, который содержит манипуляцию (Manifest.mf), указывающую путь к классам с необходимыми зависимыми JAR файлами, которые размещаются рядом с ним. В этом случае вам нужно просто выполнить команду java -jar myapp.jar, чтобы запустить код.

Если вы развернули основной JAR в какую-то директорию, а зависимые JAR файлы поместили в папку lib, то файл манифеста будет выглядеть следующим образом:

Manifest-Version: 1.0
Implementation-Title: myapp
Implementation-Version: 1.0.1
Class-Path: lib/dep1.jar lib/dep2.jar

Обратите внимание: это является независимым от платформы решением - мы можем использовать одни и те же JAR файлы для запуска на UNIX сервере или на компьютере под управлением Windows.

0

Ваше решение для Ubuntu 10.04, используя java-sun 1.6.0_24 с всеми JAR-файлами в директории "lib", выглядит следующим образом:

java -cp .:lib/* my.main.Class

Если это не сработает, попробуйте следующую команду, которая выведет все JAR-файлы в директории lib в параметр classpath:

java -cp $(for i in lib/*.jar ; do echo -n $i: ; done). my.main.Class

Эти команды позволяют вам указать все необходимые библиотеки при запуске вашего Java-приложения.

0

Вам нужно запустить Java-приложение с использованием file.jar и всех файлов из директории dir. Обратите внимание на различия в синтаксисе команд для Windows и Linux.

Для Windows используйте следующую команду:

java -cp file.jar;dir/* my.app.ClassName

Здесь ; является разделителем путей, и кавычки не обязательны, если аргумент -cp не содержит пробелов.

Для Linux команда будет выглядеть так:

java -cp file.jar:dir/* my.app.ClassName

В этом случае : — это разделитель путей. Убедитесь, что вы используете правильный разделитель в зависимости от операционной системы.

0

Вы можете попробовать воспользоваться параметром -Djava.ext.dirs=jarDirectory при запуске Java. Этот параметр указывает директорию для внешних JAR-файлов. Более подробную информацию можно найти в документации Oracle по следующей ссылке: Java Extension Mechanism.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь