включить внешний jar при запуске java -jar - PullRequest
38 голосов
/ 26 мая 2010

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

java -jar foo.jar

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

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

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

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

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

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

Ответы [ 2 ]

40 голосов
/ 26 мая 2010

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

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

?

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

39 голосов
/ 26 мая 2010

Вы можете создать папку, скажем, 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
...