Включить внешний jar при запуске java -jar

Из моих чтений, когда вы выполняете команду следующим образом:

java -jar foo.jar

Тогда основной путь к классу игнорируется, а путь к классу берется из файла манифеста.

Кроме того, classpath, объявленный в командной строке, также игнорируется. Итак, в:

java -classpath /usr/local/jar/foobar.jar -jar foo.jar

/usr/local/jar/foobar.jar игнорируется.

Наконец, я прочитал, что файл манифеста может содержать только относительные пути в файле jar.

Итак, как включить абсолютные пути к внешним jar-файлам, которые присутствуют в системе, но отсутствуют в выполняемом jar-файле?

2 ответа

Решение

Есть ли причина, по которой вы избегаете вызывать основной класс, как

java -cp /usr/local/jar/foobar.jar:/some/other/path.jar com.your.main.classname

?

Этот тип вызова позволяет смешивать абсолютные пути с относительными путями. Поместите это в сценарий оболочки или командный файл, чтобы избежать необходимости набирать или запоминать полный путь к классу, чтобы упростить процесс.

Вы можете создать папку, скажем, lib, в папке, где у вас есть файл JAR.

Содержимое Manifest.MF может быть:

Main-Class: com.mastergaurav.test.app.MainClass
Class-Path: lib/one.jar lib/two.jar

Содержимое папки:

mainFolder/
   * lib/one.jar
   * lib/two.jar
   * my-main.jar

Выполнить:

java -jar my-main.jar
Другие вопросы по тегам