我正在开发一个应该独立运行的应用程序。但是,这个项目涉及一个包含大量依赖项的.jar文件,如果我只是将这个.jar文件与应用程序一起分发,它将无法工作。
我想知道是否有任何方法可以解压缩文件,添加依赖项并重新打包它?我希望有一些自动机制,因为手动过程可能需要几个小时,并且可能还有其他引用的jar文件。
P.S。我正在使用Eclipse,但由于我将使用Web Start部署此项目,因此使用内置导出工具导出项目可能不是一个好主意,因为我的所有尝试都以ClassNotFoundException, so I suspect I might have to pack the project into several jars.
结束谢谢!
答案 0 :(得分:5)
由于文件夹结构
,重新打包解压缩的JAR有点令人沮丧解压时:
list.add(j).getArea();
你得到一个jar xvf JAR_NAME.jar
文件夹
重新包装JAR:
删除旧jar
JAR_NAME/
进入文件夹
rm JAR_NAME.jar
打包引用父文件夹的jar
cd JAR_NAME
并且您将在父文件夹中找到jar cf ../JAR_NAME.jar *
,其中原始文件已解压缩,如果您打包文件夹本身,则不会获得第一个文件夹级别。
答案 1 :(得分:1)
看看jar jar。听起来它会做你需要的。
答案 2 :(得分:1)
是的,打包和打包会让你感到烦恼,尤其是在像Ubuntu这样的Linux环境中,
在解压缩之前,请确保将Java_Home和路径导出到该文件夹,如下所示: 在您的主目录中,您很可能会有一个名为.bashrc的文件。转到文件末尾并添加以下内容
export JAVA_HOME=<path to your JDK install e.g. /opt/jdk>
export PATH=$JAVA_HOME/bin:$PATH
这将设置您的JAVA_HOME环境变量 - 通常由基于Java的应用程序使用。然后它将该目录添加到PATH变量中。操作系统将PATH理解为可执行文件的父目录列表。
现在解压缩jar xvf JAR_NAME.jar
打包回来jar cf JAR_NAME.jar *
答案 3 :(得分:1)
对于Spring Boot 2.1.9.RELEASE,我设法打开并重新包装胖罐,如下所示: 移到带有jar文件的文件夹中。
提取jar文件
jar xvf app.jar
删除旧的jar文件
rm app.jar
在父目录中创建新的jar文件
jar cmf0 META-INF/MANIFEST.MF ../app.jar *
m ...使用特定的清单文件
0 ...禁用压缩,从而避免了对依赖项(jar文件)进行压缩
文档也可以在这里找到:https://docs.oracle.com/javase/tutorial/deployment/jar/build.html
答案 4 :(得分:0)
您在eclipse中尝试过“导出runnable jar”吗?它应该适合你。
看看这张照片: