Могу ли я объединить много файлов JAR в один файл JAR - PullRequest
3 голосов
/ 23 февраля 2011

У меня есть несколько файлов JAR, которые я должен добавить в classpath в Eclipse.

Можно ли объединить 30 файлов в один файл и включить этот файл?

Ответы [ 8 ]

7 голосов
/ 23 февраля 2011

Вы можете , но я не думаю, что это будет хорошей идеей.Три возможные причины, и, несомненно, есть и другие:

  • Сложнее увидеть, откуда берется какой-либо один составляющий файл.
  • Сложнее заменить только одну библиотеку
  • Если есть файлы, которые содержатся в нескольких jar-файлах, что должно "победить"?Например, все файлы jar будут иметь свой собственный манифест ... вы можете объединить их все, но не обязательно ... а для других файлов может просто не быть разумного способа их объединения.

Мой голос - хранить файлы jar отдельно.

6 голосов
/ 23 февраля 2011

Возможно, вы захотите взглянуть на jarjar .

Если вы используете задачу муравья, вы также можете перейти на zipgroupfileset:

<zip destfile="jarlibrary.jar">
    <zipgroupfileset dir="lib" includes="*.jar"/>
</zip>
3 голосов
/ 23 февраля 2011

Для этого существует ряд инструментов:

2 голосов
/ 23 февраля 2011

Этот вопрос кажется вероятным дубликатом. Пожалуйста, попробуйте найти ответ из аналогичной статьи в этом форуме Чистый способ объединения нескольких банок

1 голос
/ 23 февраля 2011

Во-первых, вы можете. JAR - это просто ZIP-файл. Вы можете извлечь все вещи в один каталог, затем создать zip-файл (даже вручную, используя WinZip или аналогичный инструмент), вызвать результат * .jar (если хотите) и добавить его в путь к классам.

Единственная проблема, которая, вероятно, произойдет, если несколько файлов JAR содержат ресурсы с одинаковым именем (и путем). например, manfest.mf или другие дескрипторы. В большинстве случаев это не вызовет никаких проблем, но иногда, если код приложения использует эти ресурсы, у вас могут возникнуть проблемы.

Есть несколько автоматических инструментов, которые делают это. Посмотрите на JarJar.

НО более важный вопрос: почему вы хотите это сделать? Если вы не используете maven, поместите все библиотеки jar в один каталог с именем lib в вашем проекте. Затем добавьте все эти фляги в ваш classpath в затмении, используя 2-3 щелчка. Вот и все.

если вы используете maven, включите все ваши прямые зависимости в ваш pom.xml, скомпилируйте проект, а затем скажите mvn eclipse:eclipse. Это создаст .classspath и .project для вас. Теперь просто используйте его.

1 голос
/ 23 февраля 2011

Здесь есть еще одна ветка, объясняющая, как упаковать jar-файлы для релизов , включая использование плагинов Ant, jarjar и eclipse.

1 голос
/ 23 февраля 2011

Проект jarjar - это то, что вам нужно.

0 голосов
/ 23 февраля 2011

Jar-файлы - это просто ZIP-файлы, поэтому вы можете попробовать разархивировать все jar-файлы, собрать все файлы вместе, а затем снова сжать их.

...