включайте внешнюю банку когда рабочий Java - банка

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

java -jar foo.jar

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

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

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

/usr/local/jar/foobar.jar проигнорирован.

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

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

38
задан jeconner 22 April 2013 в 20:34
поделиться

2 ответа

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

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

?

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

40
ответ дан 27 November 2019 в 03:27
поделиться

Вы можете создать папку, например 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
39
ответ дан 27 November 2019 в 03:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: