Разница между извлечением и упаковкой библиотек в JAR-файл - PullRequest
67 голосов
/ 08 марта 2012

Хотелось бы узнать разницу между извлечением и упаковкой библиотек в файл jar из затмения с созданием исполняемого файла jar.

Если моя программа (runnable jar) использует другие классы, которым требуются эти внешние библиотеки (jar), что мне выбрать?

Ответы [ 2 ]

45 голосов
/ 08 марта 2012

Если вы хотите поместить баночки в созданный вами баночный файл, вы можете использовать метод упаковки.Например, если вы используете библиотеку Apache или другие jar-файлы сторонних производителей, вы можете сохранить эти jar-файлы в созданном вами jar-файле.В этом случае используйте упаковку. Параметр "Упаковка необходимых библиотек в файл jar" помещает классы пакета org.eclipse.jdt.internal.jarinjarloader в ваш сгенерированный файл, и этот пакет находится в корневом каталоге сгенерированного файла jar.Эта опция также создает больший jar-файл с точки зрения размера из-за классов загрузчика jar Eclipse.

Извлечение необходимых библиотек приведет к добавлению классов сторонних библиотек в ваш jar-файл, следуя соглашению об именах пакетов, напримересли вы откроете свой jar-контент, вы увидите некоторые классы в пакетах org.apache...

Записи основного класса отличаются между MANIFEST.MF файлами этих jar-файлов:

Запись основного класса, когда вы пакет необходимые библиотеки:

Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

Запись основного класса при извлечении необходимые библиотеки:

Main-Class: YourMainClass
1 голос
/ 08 ноября 2018

Для моего использования принципиальное отличие состоит в том, что упакованные файлы JAR включены в качестве отдельного элемента, поэтому они сохраняют информацию об авторских правах и данные подписи.

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

Таким образом, если вы используете сторонние JAR-библиотеки, всегда полезно package .

...