我怎么能重新包装一个包含所有依赖项的jar文件?

zw3*_*324 5 java import dependencies export jar

我正在开发一个应该独立运行的应用程序.但是,这个项目涉及一个包含大量依赖项的.jar文件,如果我只是将这个.jar文件与应用程序一起分发,它将无法工作.

我想知道是否有任何方法可以解压缩文件,添加依赖项并重新打包它?我希望有一些自动机制,因为手动过程可能需要几个小时,并且可能还有其他引用的jar文件.

PS我正在使用Eclipse,但由于我将使用Web Start部署此项目,因此使用内置导出工具导出项目可能不是一个好主意,因为我的尝试都以ClassNotFoundException结束,所以我怀疑我可能有将项目打包到几个罐子里.

谢谢!

MrE*_*MrE 10

由于文件夹结构的原因,重新打包解压缩的JAR有点令人沮丧

拆包时:

jar xvf JAR_NAME.jar
Run Code Online (Sandbox Code Playgroud)

你得到一个JAR_NAME/文件夹

重新包装JAR:

  • 删除旧罐子

    rm JAR_NAME.jar

  • 进入文件夹

    cd JAR_NAME

  • 打包引用父文件夹的jar

    jar cf ../JAR_NAME.jar *

并且你最终将JAR_NAME.jar在父文件夹中,原始文件被解压缩,如果你打包文件夹本身没有第一个文件夹级别.

  • 对我来说,jar 没有提取到“JAR_NAME”文件夹,而是就位 (5认同)

ans*_*tue 6

对于 Spring Boot 2.1.9.RELEASE,我设法解压并重新打包 fat jar,如下所示: 移至包含 jar 文件的文件夹中。

提取 jar 文件

jar xvf app.jar
Run Code Online (Sandbox Code Playgroud)

删除旧的 jar 文件

rm app.jar
Run Code Online (Sandbox Code Playgroud)

在父目录中创建新的 jar 文件

jar cmf0 META-INF/MANIFEST.MF ../app.jar  *
Run Code Online (Sandbox Code Playgroud)

m ...使用特定的清单文件

0 ...停用压缩,从而避免依赖项(jar 文件)被压缩

文档也可以在这里找到:https ://docs.oracle.com/javase/tutorial/deployment/jar/build.html


小智 1

看看罐子罐子。听起来它会做你需要的事情。