Объединение нескольких банок в одну банку - PullRequest
12 голосов
/ 19 мая 2009

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

Ответы [ 8 ]

12 голосов
/ 19 мая 2009

В прошлом существовали JAR со странным содержимым (например, драйвер DB2, содержащий com.ibm и com.IBM; после распаковки в файловой системе Windows эти два пакета будут объединены).

Единственная проблема, о которой вам нужно знать, это подписанные jar-файлы и другие файлы в META-INF, которые могут иметь одинаковые имена в JAR-файлах с несколькими источниками.

Простым решением всех этих проблем является использование One-JAR . Это позволяет обернуть несколько JAR-файлов в один, не распаковывая их. И прочитайте этот ответ: Самый простой способ объединить релиз в один файл JAR

4 голосов
/ 23 февраля 2012

Более простое решение (IMO) использует Плагин сборки Maven , который также описан в одном из ответов на другой вопрос, который был связан в предыдущих Q & A . Это при условии, что вы используете Maven (который сам по себе является рекомендуемым инструментом) в качестве инструмента для сборки.

2 голосов
/ 20 мая 2009

Другой замечательный вариант - ProGuard , который может также сокращать и / или запутывать код.

1 голос
/ 20 мая 2009

Если вашей основной целевой платформой является рабочий стол Windows, то вы также можете рассмотреть возможность создания собственного exe-файла Windows из jar-файлов вашего приложения

1 голос
/ 19 мая 2009

Если вы хотите, чтобы конечный пользователь без суеты запускал программу с несколькими зависимостями jar, вы можете посмотреть Launch4j или Jsmooth (я предпочитаю Launch4j). Обе программы являются программами, которые создают исполняемые файлы, объединяющие jar и jre, так что конечному пользователю он не отличается от любого другого исполняемого файла.

1 голос
/ 19 мая 2009

Если некоторые банки подписаны, вы теряете подпись, распаковывая / перепаковывая ее.

0 голосов
/ 17 июля 2010

One-JAR выполнит эту работу и выпустит новую версию (0.97), которая поддерживает фреймворки, такие как Spring и Guice, которые пользователи теперь упаковывают в архивы One-JAR. http://one -jar.sourceforge.net

Ференс Хехлер также проделал большую работу в Eclipse с помощью мастера экспорта Eclipse: мы работали вместе над FatJar / One-JAR, из которого выросла работа Eclipse, и я могу рекомендовать это как подход, хотя я не знаю, как хорошо он обрабатывает рамки.

0 голосов
/ 19 мая 2009

Ну, вы выбрасываете МАНИФЕСТ из своих банок сторонних производителей, так что это может вызвать проблемы. Например, вы можете вызывать проблемы с безопасностью, выбрасывая атрибут «Запечатано».

Почему бы просто не создать простой установщик и скрипт для запуска приложения, которое правильно устанавливает CLASSPATH?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...