Включить внешнюю банку при запуске java -jar
Из моих чтений, когда вы выполняете команду следующим образом:
java -jar foo.jar
Затем основной путь к классам игнорируется, а путь к классам - из файла манифеста.
Кроме того, classpath, объявленный в командной строке, также игнорируется. Итак, в:
java -classpath /usr/local/jar/foobar.jar -jar foo.jar
/usr/local/jar/foobar.jar игнорируется.
Наконец, я прочитал, что файл манифеста может содержать только относительные пути в файле jar.
Итак, как вы включаете абсолютные пути к внешним банкам, которые присутствуют в системе, но не в исполняемом файле jar?
Ответы
Ответ 1
Есть ли причина, по которой вы избегаете вызова основного класса, например
java -cp /usr/local/jar/foobar.jar:/some/other/path.jar com.your.main.classname
?
Этот тип вызова позволяет вам смешивать абсолютные пути с относительными путями. Поместите это в оболочку script или командный файл, чтобы избежать необходимости набирать или помнить полный путь к классам для упрощения.
Ответ 2
Вы можете создать папку, скажем 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