合并Jar文件?
我已经发现了合并jar文件的不同描述,如Fat-jar。合并Jar文件?
但是我寻找一个更简单的解决方案,就像下面的例子。
罐子-cmvf ../manifest.m ˚FMyJar.jar LIB * /罐
也许有人知道正确的语法两个或更多瓶合并成一个?
它被合并但文件无法执行。
增加类的JAR文件的类路径
您可能需要引用从一个JAR文件中的其他JAR文件的类。
例如,在典型的情况下,applet捆绑在JAR文件中,其JAR文件的清单引用了不同的JAR文件(或多个不同的JAR文件),作为该applet的实用工具。
指定要包含在applet或应用程序的清单文件的Class-Path头字段中的类。在类路径头采用以下形式:
Class-Path: jar1-name jar2-name directory-name/jar3-name
通过在manifest使用Class-Path头,你可以避免调用java运行应用程序时,指定一个长-classpath标志。 注意:Class-Path头指向本地网络上的类或JAR文件,而不是JAR文件中的JAR文件或通过Internet协议访问的类。要将JAR文件中的JAR文件中的类加载到类路径中,您必须编写自定义代码来加载这些类。例如,如果MyJar.jar包含另一个名为MyUtils.jar的JAR文件,则不能在MyJar.jar的清单中使用Class-Path标头将MyUtils.jar中的类加载到类路径中。 示例
我们想要将MyUtils.jar中的类加载到MyJar.jar中使用的类路径中。这两个JAR文件位于同一个目录中。
我们首先创建一个名为Manifest.txt一个文本文件,其内容如下:
Class-Path: MyUtils.jar
警告:文本文件必须以新行或回车符结束。如果最后一行不以新行或回车结束,则不会正确解析。
然后,我们创建一个名为MyJar.jar通过输入以下命令JAR文件:
罐子立方英尺MyJar.jar Manifest.txt MyPackage的/ *类
这将创建一个清单与JAR文件以下内容:现在在MyUtils.jar
Manifest-Version: 1.0
Class-Path: MyUtils.jar
Created-By: 1.7.0_06 (Oracle Corporation)
的类加载到类路径当您运行MyJar.jar。
我不知道你想什么合并,但假设有一个主类和几个简单的库你的一些代码,你可以其他所有jar文件解压到同一目录下,添加您的类,添加Manifest.mf与Main-Class:标题指向您的主类,然后jar(zip)一切回来。这样,您就可以覆盖所有包含的jar文件的清单以及可能在多个jar中具有相同名称的其他文件的清单,但您可以尝试一下。
你得到的是一个jar文件,你可以用
java -jar myfile.jar
运行,并在Main-Class的头文件中定义的类将被用来作为切入点,它必须实现
方法。
虽然我不推荐这样的解决方案,但还有其他方法可以帮助您完成此任务。我知道,即使这个解决方案可以被自动化,但你应该看看maven(例如spring-boot:repackage)或其他构建工具。
我不知道应该在Manifest文件中的“classpath”中写什么以及放置图片的位置。但不知何故,我认为有人可以知道正确的语法,如Oracle文档中所述。不过,我会阅读有关Maven插件或其他构建工具。谢谢 –
为什么还打算尝试结合罐子?这将为您实现什么?为什么不相反,只要确保可以使用两个单独的jar文件? –
我试图合并它,因为我不关心带库的文件夹,它们必须与主jar文件位于同一个文件夹中。谢谢 –