Включить внешний 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