Java: создать исполняемый файл jar со встроенными зависимыми файлами jar - PullRequest
4 голосов
/ 29 ноября 2011

Я создал исполняемый JAR с манифестом:

Manifest-Version: 1.0
Main-Class: MyClass
Class-Path: lib/ext.jar

Я могу успешно запустить этот JAR, если у меня есть папка lib с зависимой ext.jar в созданной папке .jar.

Я хотел бы встроить ext.jar в мой исполняемый файл JAR, чтобы запустить его где угодно, без создания папки lib.Это позволило бы JAR-файлу быть автономным, включая все его зависимости.

Есть ли способ сделать это?

Ответы [ 2 ]

3 голосов
/ 29 ноября 2011

Загрузчик классов Java по умолчанию не может найти встроенный jar внутри файла jar.Вам нужно будет настроить вашу Java-программу на использование загрузчика классов, который может работать со встроенными jar-файлами.Насколько я знаю, я не видел ни одной в библиотеках с открытым исходным кодом, поэтому вам может потребоваться написать ее самостоятельно.

Кроме того, вы можете извлечь все файлы JAR и объединить содержимое в один файл JAR.

Чистый способ объединения нескольких банок?Предпочтительно с использованием Ant

2 голосов
/ 29 ноября 2011

Java не имеет встроенной поддержки для встраивания jar в jar. Этого можно достичь, написав собственный загрузчик классов или используя инструмент, который уже был написан для этой цели: Fat Jar .

...