gpt4 book ai didi

java - Launch4J - 如何将依赖的 jar 附加到生成的 exe

转载 作者:搜寻专家 更新时间:2023-10-30 21:19:29 25 4
gpt4 key购买 nike

我有一个简单的 java 项目,它需要外部 jar。我用 netbeans 构建它,在执行 Clean and Build 命令后,我可以在 dist 目录中找到以下结构:

-myApp.jar
-lib/
library1.jar
library2.jar

典型的,我会说。

现在,我想将带有依赖库的 myApp.jar 作为一个 exe 分发。这可能吗?我正在尝试使用 Launch4J。在我创建配置文件的 GUI 中,cp 部分有一些选项

<cp>lib/swing-layout-1.0.4.jar</cp>

但它似乎是类路径,这是我唯一可以引用我的额外 jar 的地方。

创建exe文件后,我在exe中找不到依赖库(exe可以用winrar打开),因此我的应用程序崩溃了。

那么如何正确制作exe文件呢?

感谢您的帮助。

最佳答案

由于经常发生无法解决问题的情况,我将其发布在 StackOverflow 上……发布问题后不久我就有了一个想法。

所以我的问题的答案是:

将所有的依赖jar放到一个主jar中。

我花了一些时间才找到有关如何做到这一点的信息。

为了帮助人们,我决定在这里发布详细的说明 - 它们基于 Netbeans 7.4。

  1. 以下文章来自 http://mavistechchannel.wordpress.com/2010/08/17/how-to-build-a-single-jar-file-with-external-libs/我创建了为我构建 one-jar-app 的 ant 脚本。然后我可以通过 Launch4J 手动创建 exe

  2. 然后我决定我想要更多的自动化任务,我做到了,Ant 为我构建了 exe(通过 Launch4J)

  3. 然后我意识到我必须在我的自动化任务之前执行“清理和构建”(第 2 点)/我决定我希望在 exe 构建之前自动完成清理和构建

    <

综合起来,我附上了由第 1、2、3 点组成的 ant 构建脚本:

需要编辑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 文件夹中准备就绪:-)

关于java - Launch4J - 如何将依赖的 jar 附加到生成的 exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19917960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com