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

标签 java jar launch4j

我有一个简单的 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/

相关文章:

java - 关于 Solace 属性何时有效的困惑

java - 读取jar文件中的目录

java - pom.xml 中的转义属性

java - 如何更改 launch4j 生成的 exe 文件的语言参数?

java - izpack 和 launch4j : Invalid uninstaller

java - 当可见性更改时,JButton 大小设置为默认大小

Java进程构建器: environment set correctly but still command not found

java - PC 和 Android 之间发送加密数据时 AES/CTR/NoPadding 最后一 block 丢失

java - 有没有办法在Intellij IDEA中查看引用的jar(库)的使用情况?

java - 使用 java -jar 命令执行 jar 文件失败