如何组合两个Jar文件

Ton*_*ony 32 java applet

是否可以组合两个jar文件,以便在applet标签中我可以简单地做类似的事情

archive="jarjar.jar/jar1.jar"...  ...archive="jarjar.jar/jar2.jar"... instead of
archive="jar1.jar"... ...archive="jar2.jar"...
Run Code Online (Sandbox Code Playgroud)

我只需要一个jar文件,所以将两个jar文件放在一个文件夹中对我没用.

Aln*_*tak 76

当然,只需提取两个jar文件并重新创建一个新文件

$ mkdir tmp
$ (cd tmp; unzip -uo ../jar1.jar)
$ (cd tmp; unzip -uo ../jar2.jar)
$ jar -cvf combined.jar -C tmp .
Run Code Online (Sandbox Code Playgroud)

这些东西tmp确保将两个现有的jar提取到一个干净的目录中,然后从中创建新的jar.

请注意,您可能还需要合并manifest.mf其中包含的任何文件,如果有任何文件也包含该文件命令中的"-m"选项.

  • 如果您有一个不区分大小写的文件系统并且这些 jar 包含具有相同名称的类(通常如果它们被混淆),则此方法将不起作用 (2认同)

ada*_*shr 8

您需要提取两个JAR文件并重新生成一个.

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

cd tmp
jar -cvf jar3.jar .
Run Code Online (Sandbox Code Playgroud)

请参考以下答案.

  • 这有点不对,jar(与tar不同)不允许放置目标路径.见@ AInitak的回答.. (16认同)

yko*_*tor 5

将zipgroupfileset与Ant Zip任务一起使用

<zip destfile="out.jar">
    <zipgroupfileset dir="lib" includes="*.jar"/>
</zip>
Run Code Online (Sandbox Code Playgroud)

可能会帮助你.


Dan*_*iel 0

只需解压这两个 jar 文件,然后将结果压缩到一个 zip 文件中,然后再次将其重命名为 jar 即可。

但正如 adarshr 所说:最好使用 jar 命令。

  • 如果这样做,您将丢失或覆盖 MANIFEST.MF。最好使用 jar 命令。 (3认同)
  • @adarshr:无论如何,您都必须合并两个清单文件,“jar”命令不会自动执行此操作。事实上,您的答案的 jar 命令只是忽略各个清单并创建一个新清单。 (2认同)