当前位置: 首页 > 面试题库 >

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

田翔
2023-03-14
问题内容

我有一个简单的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中找不到依赖库(可以使用winrar打开exe),因此我的应用程序崩溃了。

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

谢谢你的帮助。


问题答案:

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

所以我的问题的答案是:

将所有从属罐子放入一个主罐子中。

我花了一些时间来查找信息,我该怎么做。

为了帮助人们,我决定在此处发布详细说明-他们基于Netbeans 7.4。

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

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

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

放在一起,我将附加由点1,2,3组成的蚂蚁构建脚本:

需要编辑build.xml并将下面找到的内容放在“项目”结束标记之前

<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并选择:Run Target / Other Targets / package-for-launch4j

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



 类似资料:
  • 问题内容: 我有一个依赖 然后我执行。添加了所有本机文件和远程Maven库,但是没有此jar。 更新 当我尝试通过运行应用程序时。它返回一个错误,指出上述依赖项中没有任何类(NoClassDefFoundError:de.matthiasmann.twl.ForExample)。我想将这个jar中的类添加到myjar.jar中(与maven使用远程依赖项相同)。我如何配置Maven来做到这一点?

  • 我有什么似乎是一个简单的问题,关于如何设置Jenkins和maven 3。 为了简单起见,假设我们有四个项目: 没有依赖关系的模型 Commons依赖于模型 服务器依赖于Common和模型 前端依赖于模型 我想要实现的是,一个成功的基于模型的构建触发所有项目的新构建,这些项目在其pom中依赖于模型(这里是公共的,服务器和前端) 如果Common失败,则无需构建服务器。 在上述情况下,我似乎可以通过

  • 问题内容: 我添加了一个到我在我的日食像这个- 右键单击项目-> BuildPath->配置构建路径->库->添加外部Jar 有一个名为一类的文件。在eclipse中调试代码时,我进入了该类。 在那次日食显示我像这样之后 JAR文件没有源附件。您可以通过单击下面的附加源来附加源 现在我不确定如何将源附加到日食中。从哪里来?谁能一步一步为我提供我需要做的事情。 更新:- 我尝试解压缩,然后得到了。之

  • 问题内容: 我正在使用Maven(和Maven Eclipse集成)来管理Eclipse中Java项目的依赖项。从Maven存储库自动下载JAR文件的功能可以节省时间。不幸的是,它不包括API文档和源代码。 如何设置Maven以自动获取源文件和javadoc附件并在Eclipse中正确注册它们? 问题答案: 我确信反过来,Eclipse的m2eclipse Maven插件可以做到这一点。您可以将其

  • 我正在尝试开发一个游戏插件(oldschool runescape)。我正在尝试加入组织。json,以便更容易读取/写入游戏状态和内容,但似乎不知道如何将其发送到package org。json和我的插件。它可以很好地编译,但不能与该包一起运行。有什么帮助吗? 这就是我的插件。格雷德尔。kts看起来像 编辑:我尝试了compileOnly、implementation、testImplementa