猿问

将发布合并到一个JAR文件的最简单方法

将发布合并到一个JAR文件的最简单方法

是否有一个工具或脚本可以轻松地将一堆JAR文件合并到一个JAR文件中?奖励是轻松设置主文件清单并使其可执行。

具体案例是Java重组文本工具。我想用以下的方式运行它:

java -jar rst.jar

据我所知,它没有依赖关系,表明它不应该是一个简单的单文件工具,但下载的ZIP文件包含很多库。

      0  11-30-07 10:01   jrst-0.8.1/
    922  11-30-07 09:53   jrst-0.8.1/jrst.bat    898  11-30-07 09:53   jrst-0.8.1/jrst.sh   2675  11-30-07 09:42   jrst-0.8.1/readmeEN.txt 108821  11-30-07 09:59   jrst-0.8.1/jrst-0.8.1.jar
   2675  11-30-07 09:42   jrst-0.8.1/readme.txt      0  11-30-07 10:01   jrst-0.8.1/lib/
  81508  11-30-07 09:49   jrst-0.8.1/lib/batik-util-1.6-1.jar2450757  11-30-07 09:49   jrst-0.8.1/lib/icu4j-2.6.1.jar
 559366  11-30-07 09:49   jrst-0.8.1/lib/commons-collections-3.1.jar  83613  11-30-07 09:49   jrst-0.8.1/lib/commons-io-1.3.1.jar
 207723  11-30-07 09:49   jrst-0.8.1/lib/commons-lang-2.1.jar  52915  11-30-07 09:49   jrst-0.8.1/lib/commons-logging-1.1.jar 260172  11-30-07 09:49   jrst-0.8.1/lib/commons-primitives-1.0.jar 313898  11-30-07 09:49   jrst-0.8.1/lib/dom4j-1.6.1.jar1994150  11-30-07 09:49   jrst-0.8.1/lib/fop-0.93-jdk15.jar  55147  11-30-07 09:49   jrst-0.8.1/lib/activation-1.0.2.jar
 355030  11-30-07 09:49   jrst-0.8.1/lib/mail-1.3.3.jar
  77977  11-30-07 09:49   jrst-0.8.1/lib/servlet-api-2.3.jar 226915  11-30-07 09:49   jrst-0.8.1/lib/jaxen-1.1.1.jar
 153253  11-30-07 09:49   jrst-0.8.1/lib/jdom-1.0.jar  50789  11-30-07 09:49   jrst-0.8.1/lib/jewelcli-0.41.jar 324952  11-30-07 09:49   jrst-0.8.1/lib/looks-1.2.2.jar
 121070  11-30-07 09:49   jrst-0.8.1/lib/junit-3.8.1.jar

如您所见,有些人不希望手动执行此操作。

到目前为止,我只尝试过AutoJar和ProGuard,两者都很容易运行。似乎JAR文件中的常量池存在一些问题。

显然jrst有点破,所以我会去解决它。在Maven的 pom.xml文件显然是打破过,所以我必须解决这个问题JRST固定之前......我觉得自己像一个错误磁铁:-)


更新:我从来没有修复过这个应用程序,但是我查看了Eclipse的“Runnable JAR export wizard”,它基于一个胖JAR。我发现这很容易用于部署我自己的代码。

对于非Eclipse环境中的构建,其他一些优秀建议可能更好,oss可能应该使用Ant进行很好的构建。(Maven,到目前为止刚刚给了我痛苦,但其他人喜欢它。)


眼眸繁星
浏览 542回答 3
3回答

四季花海

Eclipse 3.4 JDT的Runnable JAR导出向导。在Eclipse 3.5中,这已得到扩展。现在,您可以选择处理引用的JAR文件的方式。

慕码人2483693

Ant's&nbsp;zipfileset完成了这项工作<jar&nbsp;id="files"&nbsp;jarfile="all.jar"> &nbsp;&nbsp;&nbsp;&nbsp;<zipfileset&nbsp;src="first.jar"&nbsp;includes="**/*.java&nbsp;**/*.class"/> &nbsp;&nbsp;&nbsp;&nbsp;<zipfileset&nbsp;src="second.jar"&nbsp;includes="**/*.java&nbsp;**/*.class"/></jar>

大话西游666

尝试了一些不同的解决方案之后,我发现One-JAR&nbsp;最容易使用,并且设法做到了这一点:生成一个包含我需要的所有内容的可执行JAR。One-JAR使用可以导航嵌套资源的自定义类加载器。查看下载中的.bat文件,看起来jrst-0.8.1.jar中的org.codelutin.jrst.JRST是主类,因此您的清单应如下所示:Main-Class:&nbsp;com.simontuffs.onejar.BootOne-Jar-Main-Class:&nbsp;org.codelutin.jrst.JRST非常酷的是,One-JAR将为您处理传递命令行参数。类路径由自定义类加载器处理,假设您需要的所有资源都捆绑到单个JAR中。使用One-JAR的最简单方法是使用ant;&nbsp;有一个自定义的“one-jar”ant任务,其工作方式如下(假设你的清单叫做“rst.mf”):<target&nbsp;name="jar-rst"> &nbsp;&nbsp;&nbsp;&nbsp;<one-jar&nbsp;destfile="rst.jar"&nbsp;manifest="rst.mf"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<main&nbsp;jar="jrst-0.8.1.jar"&nbsp;/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<lib> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<fileset&nbsp;dir="${pathToJars}"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<include&nbsp;name="batik-util-1.6-1.jar"&nbsp;/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<include&nbsp;name="icu4j-2.6.1.jar"&nbsp;/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<include&nbsp;name="commons-collections-3.1.jar"&nbsp;/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<!--&nbsp;Snip&nbsp;--> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</fileset> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</lib> &nbsp;&nbsp;&nbsp;&nbsp;</one-jar></target>
随时随地看视频慕课网APP

相关分类

Java
我要回答