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

nor*_*771 11 java jar launch4j

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

-myApp.jar
-lib/
     library1.jar
     library2.jar
Run Code Online (Sandbox Code Playgroud)

典型的,我会说.

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

<cp>lib/swing-layout-1.0.4.jar</cp>
Run Code Online (Sandbox Code Playgroud)

但它似乎是classpath,它是我可以参考我的额外罐子的唯一地方.

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

我怎样才能使exe文件正确?

谢谢你的帮助.

nor*_*771 16

因为它经常发生无法解决问题我在StackOverflow上发布了...在发布问题后不久我就明白了.

所以我的问题的答案是:

将所有相关的罐子放入一个主罐子里.

花了一些时间才找到信息我该怎么做.

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

  1. 以下文章来自http://mavistechchannel.wordpress.com/2010/08/17/how-to-build-a-single-jar-file-with-external-libs/我创建了一个构建一个jar的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>
Run Code Online (Sandbox Code Playgroud)

然后在Netbeans中右键单击build.xml并选择:Run Target/Other Targets/package-for-launch4j

exe文件已准备好在exe文件夹中:-)


SaF*_*NZz 6

当您转换 .jar 文件时

  1. 转到类路径选项卡
  2. 检查自定义类路径
  3. 构建项目后,在主类上从 dist 文件夹中选择 .jar
  4. 在类路径文本区域上添加您的库,将它们添加到该文本区域的正下方,写入库的完整路径(当然包括库,即“C:\folder\lib\file.jar”)

例子