我有一个简单的java项目,它需要外部jar。
我使用 netbeans 构建它,在 Clean 和 Build 命令之后,我可以在 dist 目录中找到以下结构:
-myApp.jar
-lib/
library1.jar
library2.jar
我想说,典型的。
现在,我想将 myApp.jar 及其依赖库作为一个 exe 进行分发。
这可能吗?我正在尝试使用 Launch4J。在 GUI 中我创建了配置文件,其中有一些选项cp section
<cp>lib/swing-layout-1.0.4.jar</cp>
但它似乎是类路径,这是我可以引用我的额外罐子的唯一地方。
创建exe文件后,我在exe中找不到依赖库(exe可以用winrar打开),因此我的应用程序崩溃了。
那么如何正确制作exe文件呢?
感谢您的帮助。
由于经常发生无法解决问题的情况,我将其发布在 StackOverflow 上……发布问题后不久我就有了一个想法。
所以我的问题的答案是:
将所有依赖 jar 放入一个主 jar 中。
我花了一些时间才找到如何做到这一点的信息。
为了帮助人们,我决定在这里发布详细的说明 - 它们基于 Netbeans 7.4。
以下文章来自http://mavistechchannel.wordpress.com/2010/08/17/how-to-build-a-single-jar-file-with-external-libs/ http://mavistechchannel.wordpress.com/2010/08/17/how-to-build-a-single-jar-file-with-external-libs/我创建了为我构建 one-jar-app 的 ant 脚本。
然后我可以通过 Launch4J 手动创建 exe
然后我决定我想要更多的自动化任务,我做到了,Ant 为我构建了 exe(通过 Launch4J)
然后我意识到我必须在自动化任务之前执行“清理和构建”(在第 2 点中)/我决定在 exe 构建之前自动完成清理和构建
将所有内容放在一起,我附上我的 ant 构建脚本,其中包含第 1、2、3 点:
需要编辑build.xml并将下面找到的内容放在“project”结束标记之前
<target name="package-for-launch4j" depends="clean,compile,jar">
<property name="launch4jexe.dir" location="C:\Program Files (x86)\Launch4j" />
<taskdef name="launch4j"
classname="net.sf.launch4j.ant.Launch4jTask"
classpath="${launch4jexe.dir}/launch4j.jar
:${launch4jexe.dir}/lib/xstream.jar" />
<property name="launch4j.jar.name" value="MyAppJarName"/>
<property name="launch4j.dir" value="exe"/>
<property name="launch4j.jar" value="${launch4j.dir}/${launch4j.jar.name}.jar"/>
<echo message="Packaging ${application.title} into a single JAR at ${launch4j.jar}"/>
<delete dir="${launch4j.dir}"/>
<mkdir dir="${launch4j.dir}"/>
<jar destfile="${launch4j.dir}/temp_final.jar" filesetmanifest="skip">
<zipgroupfileset dir="dist" includes="*.jar"/>
<zipgroupfileset dir="dist/lib" includes="*.jar"/>
<manifest>
<attribute name="Main-Class" value="${main.class}"/>
</manifest>
</jar>
<zip destfile="${launch4j.jar}">
<zipfileset src="${launch4j.dir}/temp_final.jar"
excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/>
</zip>
<delete file="${launch4j.dir}/temp_final.jar"/>
<launch4j configFile="misc/l4j-myapp.xml" />
</target>
然后在 Netbeans 中右键单击 build.xml 并选择:
运行目标/其他目标/package-for-launch4j
exe 文件已在 exe 文件夹中准备好:-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)