java - simples - pdfbox merge pdf
Cómo combinar dos archivos jar (9)
¿Es posible combinar dos archivos jar de forma que en una etiqueta de applet simplemente pueda hacer algo como?
archive="jarjar.jar/jar1.jar"... ...archive="jarjar.jar/jar2.jar"... instead of
archive="jar1.jar"... ...archive="jar2.jar"...
Solo necesito tener un archivo jar, por lo que colocar dos archivos jar en una carpeta no me ayudará.
Claro, solo extraiga los dos archivos jar y vuelva a crear uno nuevo
$ mkdir tmp
$ (cd tmp; unzip -uo ../jar1.jar)
$ (cd tmp; unzip -uo ../jar2.jar)
$ jar -cvf combined.jar -C tmp .
Las cosas con tmp
aseguran que los dos tarros existentes se extraigan en un directorio limpio y luego se cree uno nuevo a partir de eso.
Tenga en cuenta que es posible que también deba combinar los archivos manifest.mf
que se encuentran en el mismo, y si hay alguno, también incluya la opción ''-m'' en ese comando de archivo.
Extrae ambos frascos y crea uno nuevo. (Use los comandos de jar que se muestran arriba). Una advertencia sobre el archivo de manifiesto es que desea extraer el contenedor cuyo archivo de manifiesto desea conservar en el último.
Sé que es una pregunta antigua y solo quería agregar mis dos centavos (aún no tengo permiso para comentar, así que creo una nueva respuesta).
Veo el valor en la respuesta de sumanth.donthula, ya que el problema para todos los que combinamos frascos será cómo tratar con los archivos de manifiesto. En mi caso, quise fusionar algunos archivos de biblioteca (principalmente el código de cliente de servicio web generado) en el contenedor de una aplicación escrita por mí. Estaba bien reemplazar los manifiestos con el de mi propia jarra.
La forma más sencilla de hacerlo es encargarse del orden en el que se descomprimen los archivos originales (como señalaron Alnitak y sumanth.donthula).
Quería usar la tarea zip ant (gracias, ykombinator, por la idea). Resultó que la única forma de controlar el orden de compresión / empaquetado es cambiar el nombre de los archivos. Ver mi objetivo hormiga a continuación.
El directorio de salida en mi ejemplo se llama codemodule.dir (creé un módulo de código de FileNet). El resto de los nombres son autoexplicativos. El paso importante es cambiar el nombre del jar de aplicación a 0 _... para ser el primero en orden. De esta manera, su manifiesto se conservará ya que el atributo duplicado de la tarea zip ant está configurado para preservar.
<target name="merge_jars">
<delete dir="${codemodule.dir}" quiet="true" />
<mkdir dir="${codemodule.dir}" />
<copy todir="${codemodule.dir}">
<fileset dir="${lib.dir}" includes="*.jar"/>
<fileset dir="${basedir}" includes="${app-name}.jar"/>
</copy>
<move file="${codemodule.dir}/${app-name}.jar" tofile="${codemodule.dir}/0_${app-name}.jar"/>
<zip destfile="${codemodule.dir}/${app-name}-fat.jar" duplicate="preserve">
<zipgroupfileset dir="${codemodule.dir}">
<include name="*.jar"/>
</zipgroupfileset>
</zip>
Si está utilizando gradle, simplemente agregue lo siguiente a build.gradle. No se requieren complementos. Si necesita opciones especiales, vaya con el complemento Fatjar, como sugiere initialZero.
task superSimpleJar(type: Jar) {
baseName = project.name + ''-all''
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
}
Para el proyecto de Android, agregue esto a app / build.gradle y ejecute "gradlew superSimpleJar". Encuentra jar en 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)
}
}
}
Simplemente descomprima ambos archivos jar, luego comprima los resultados en un solo archivo zip y cambie el nombre a jar nuevamente.
Pero como adarshr dijo: Mejor usar el comando jar para eso.
También está el plugin eclipse fatjar.
Use zipgroupfileset con la tarea Ant Zip
<zip destfile="out.jar">
<zipgroupfileset dir="lib" includes="*.jar"/>
</zip>
Podría ayudarte.
Necesitas extraer ambos archivos JAR y regenerar uno.
jar -xvf jar1.jar tmp
jar -xvf jar2.jar tmp
cd tmp
jar -cvf jar3.jar .
Por favor, consulte la siguiente respuesta .
<?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>
guarde este código en el archivo build.xml
y manténgalo en la misma carpeta donde se guardan todos los archivos jar que se combinarán. Abra cmd
, cmd
ruta de la carpeta y ejecute el comando: ant zip
.
Se generará out.jar
que es una combinación de todos los tarros.