В Linux, как выполнить Java jar-файл с внешними файлами jar?

#java #linux #jar #execution

#java #linux #jar #выполнение

Вопрос:

В Linux, как выполнить Java jar-файл с внешними файлами jar?

Ответ №1:

Либо используйте -cp флаг:

 java -cp /path/to/somefolder/*.jar:/path/to/otherfolder/*.jar com.YourMainClass
  

Или добавьте Class-Path: заголовок в манифест вашего jar (см. Ответ Джигара)


Примечание для других, кто ответил java -jar <etc> : -jar Флаг деактивирует стандартный -cp флаг и CLASSPATH переменную среды, поскольку он извлекает путь к классу из манифеста JAR. Любой ответ, который сочетает в себе -jar и либо -cp , либо $CLASSPATH не будет работать.

Эта информация хорошо скрыта, но я, наконец, нашел ссылку:

-jar
Запустите программу, инкапсулированную в файл JAR. Первым аргументом является имя файла JAR вместо имени класса запуска. Для того, чтобы эта опция работала, манифест файла JAR должен содержать строку вида Main-Class: classname. Здесь classname идентифицирует класс, имеющий public static void main(String[]
args)
метод, который служит отправной точкой вашего приложения. Смотрите справочную страницу Jar tool и Jar trail руководства по Java для получения информации о работе с файлами Jar и манифестами Jar-файлов. При использовании этой опции файл JAR является источником всех пользовательских классов, а другие настройки пути к пользовательскому классу игнорируются.

Источник: java — программа запуска приложений Java

Ответ №2:

 java -jar /path/to/externalJarFile.jar
  

Обновить

Вы можете добавить требуемую библиотеку в манифест с Class-Path: заголовком

Например :

 Class-Path: MyUtils.jar
  

Смотрите

Комментарии:

1. например, я хочу выполнить sample.jar файл.но для этого требуются дополнительные файлы jar (скажем add.jar ) расположен по другому пути. Теперь, как выполнить sample.jar

2. Это первый правильный ответ здесь, который содержит флаг -jar ( 1)