Подтвердить что ты не робот

Как объединить два файла Jar

Можно ли объединить два файла jar, чтобы в теге апплета я мог просто сделать что-то вроде

archive="jarjar.jar/jar1.jar"...  ...archive="jarjar.jar/jar2.jar"... instead of
archive="jar1.jar"... ...archive="jar2.jar"...

Мне нужно иметь только один файл jar, поэтому размещение двух файлов jar в папке не поможет мне.

4b9b3361

Ответ 1

Вам нужно извлечь оба файла JAR и восстановить его.

jar -xvf jar1.jar tmp
jar -xvf jar2.jar tmp

cd tmp
jar -cvf jar3.jar .

Ответ 2

Конечно, просто извлеките два файла jar и заново создайте новый

$ mkdir tmp
$ (cd tmp; jar -xf ../jar1.jar)
$ (cd tmp; jar -xf ../jar2.jar)
$ jar -cvf combined.jar -C tmp .

Материал с tmp гарантирует, что два существующих банка будут извлечены в чистый каталог, а затем новый, сделанный из этого.

Имейте в виду, что вам также может понадобиться объединить любые содержащиеся в нем файлы manifest.mf, а также если в этой команде есть также опция -m.

Ответ 3

Используйте zipgroupfileset с Ant Задача zip

<zip destfile="out.jar">
    <zipgroupfileset dir="lib" includes="*.jar"/>
</zip>

Можете помочь вам.

Ответ 4

Просто разархивируйте оба файла jar, затем запишите результаты в один zip файл и снова переименуйте его в jar.

Но как сказал adarshr: Лучше используйте команду jar для этого.

Ответ 5

Существует также плагин fcljse fatjar.

Ответ 6

Если вы используете gradle, просто добавьте следующее для build.gradle. Плагинов не требуется. Если вам нужны специальные опции, переходите к плагину Fatjar, как предлагает initialZero.

task superSimpleJar(type: Jar) {
    baseName = project.name + '-all'
    from { configurations.compile.collect { it.isDirectory() ? it :     zipTree(it) } }
    with jar
}

В Android-проекте добавьте это в приложение /build.gradle и запустите "gradlew superSimpleJar". Найти jar в файле build/libs/app-all.jar

task superSimpleJar(type: Jar) {
baseName = project.name + '-all'
from {

    configurations.compile.findAll {

    it.getName() != 'android.jar'

    }.collect {

    it.isDirectory() ? it : zipTree(it)

    }
 }
}

Ответ 7

<?xml version="1.0" encoding="UTF-8"?>
<project name="zip-test" default="zip" basedir=".">

    <target name="zip">
        <zip destfile="out.jar">
            <zipgroupfileset dir="." includes="*.jar"/>
        </zip>
    </target>
</project>

сохраните этот код в файле build.xml и сохраните его в той же папке, где хранятся все файлы jar, которые нужно объединить. Откройте cmd, укажите путь к папке и выполните команду: ant zip.

Он будет генерировать out.jar, который является комбинацией всех банок.