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

2024-03-06

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

  1. 以下文章来自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

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

  3. 然后我意识到我必须在自动化任务之前执行“清理和构建”(在第 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(使用前将#替换为@)

Launch4J - 如何将依赖的 jar 附加到生成的 exe 的相关文章

  • 任务“:app:dexDebug”执行失败

    我目前正在处理我的项目 我决定将我的 Android Studio 更新到新版本 但在我导入项目后 它显示如下错误 Information Gradle tasks app assembleDebug app preBuild UP TO
  • Google 地图查询返回的 JSON 包含像 \x26 这样的编码字符(如何解码?)

    在 Java 应用程序中 我获取 JSON 来自 Google 地图 其中包含以下字符 x26我想将其转换为其原始字符 据我所知 这是一个 UTF 8 表示法 但我不完全确定 在源 JSON 中 可能会出现各种编码字符 例如 x3c div
  • 检查双精度值的等于和不等于条件

    我在比较两者时遇到困难double values using and 我创建了 6 个双变量并尝试进行比较If健康 状况 double a b c d e f if a b c d e f My code here in case of t
  • 如何打印整个字符串池?

    我想打印包含文字的整个字符串池String使用添加的对象intern 就在垃圾收集之前 JDK有没有隐式的方法来进行这样的操作 我们如何检查字符串池 EDIT The comment suggests that there may be a
  • JTree 节点不会被直观地选择

    不知何故 我无法为我的 JTree 节点启用 选择突出显示 我正在我的项目中使用自定义单元格渲染器 这很可能导致此问题 这是完整的渲染器类代码 protected class ProfessionTreeCellRenderer exten
  • MI设备中即使应用程序被杀死,如何运行后台服务

    您好 我正在使用 alaram 管理器运行后台服务 它工作正常 但对于某些 mi 设备 后台服务无法工作 我使用了服务 但它无法工作 如何在 mi 中运行我的后台服务 MI UI有自己的安全选项 所以你需要的不仅仅是上面提到的粘性服务 你需
  • Spring Stomp over Websocket:流式传输大文件

    我的SockJs客户端在网页中 发送帧大小为16K的消息 消息大小限制决定了我可以传输的文件的最大大小 以下是我在文档中找到的内容 Configure the maximum size for an incoming sub protoco
  • 使用 Java 在浏览器中下载 CSV 文件

    我正在尝试在 Web 应用程序上添加一个按钮 单击该按钮会下载一个 CSV 文件 该文件很小 大小仅约 4KB 我已经制作了按钮并附加了一个侦听器 文件也准备好了 我现在唯一需要做的就是创建单击按钮时下载 csv 文件的实际事件 假设 fi
  • @EnableTransactionManagement 的范围是什么?

    我试图了解正确的放置位置 EnableTransactionManagement多个 JavaConfig 上下文的情况下的注释 考虑以下场景 我在 JPAConfig java 和 AppConfig java 中有 JPA 配置以及一组
  • 如何在java中使jpeg无损?

    有没有人可以告诉我如何使用编写 jpeg 文件losslessjava中的压缩 我使用下面的代码读取字节来编辑字节 WritableRaster raster image getRaster DataBufferByte buffer Da
  • 具有多种值类型的 Java 枚举

    基本上我所做的是为国家编写一个枚举 我希望不仅能够像国家一样访问它们 而且还能够访问它们的缩写以及它们是否是原始殖民地 public enum States MASSACHUSETTS Massachusetts MA true MICHI
  • tomcat 过滤所有 web 应用程序

    问题 我想对所有网络应用程序进行过滤 我创建了一个过滤器来监视对 apache tomcat 服务器的请求 举例来说 它称为 MyFilter 我在 netbeans 中创建了它 它创建了 2 个独立的目录 webpages contain
  • OpenJDK 版本控制

    上下文 我想确保我们系统上安装的 Java 不受 CVE 2022 21449 的影响 java version 给出 openjdk version 11 0 7 2020 04 14 LTS OpenJDK Runtime Enviro
  • 如何在keycloak中动态编辑standalone.xml文件

    我正在尝试通过 docker 编辑standalone xml 并尝试添加 但 keycloak 正在使用它standalone xml 但我可以看到standalone xml 文件中的更改 我需要在standalone xml 文件中添
  • 阻止 OSX 变音符号为所有用户禁用 Java 中的 KeyBindings?

    注 我知道这个问题 https stackoverflow com questions 40335285 java keybinds stop working after holding down a key用户必须输入终端命令才能解决此问
  • 来自客户端的超时 Web 服务调用

    我正在使用 RestEasy 客户端调用网络服务 一项要求是 如果调用运行时间超过 5 秒 则中止 超时调用 我如何使用 RestEasy 客户端实现这一目标 我只看到服务器端超时 即如果在一定时间内未完成请求 Rest Easy 网络服务
  • 从java中的字符串数组中删除空值

    java中如何从字符串数组中删除空值 String firstArray test1 test2 test4 我需要像这样没有 null 空 值的 firstArray String firstArray test1 test2 test4
  • struts 教程或示例

    我正在尝试在 Struts 中制作一个登录页面 这个想法是验证用户是否存在等 然后如果有错误 则返回到登录页面 错误显示为红色 典型的登录或任何表单页面验证 我想知道是否有人知道 Struts 中的错误管理教程 我正在专门寻找有关的教程 或
  • MongoDB Java 驱动程序:MongoCore 驱动程序与 MongoDB 驱动程序与 MongoDB 异步驱动程序

    MongoDB Java 驱动程序有三种不同的驱动程序选项 核心驱动 MongoDB 驱动程序 MongoDB 异步驱动程序 The 驱动程序描述页面 https docs mongodb org ecosystem drivers jav
  • 使用 eclipse IDE 配置 angularjs

    我想开始使用 AngularJs 和 Java Spring 进行开发 我使用 Eclipse 作为 IDE 我想配置我的 Eclipse 以使这些框架无缝工作 我知道我可能要求太多 但相信我 我已经做了很多研究 你们是我最后的选择 任何帮

随机推荐

  • 如何将外部资源(属性文件)添加到类路径中以便 war 可以读取?

    我们在将外部目录 具有 config properties 添加到类路径时遇到了小问题 如果我们将其添加到类路径中 我们应该能够在 Web 应用程序中读取它 Web 应用程序中有一些 Spring 应用程序会读取外部属性文件 我在任何地方都
  • CSS @font-face 不适用于 Firefox,但适用于 Chrome 和 IE

    以下代码适用于 Google Chrome beta 以及 IE 7 但是 Firefox 似乎存在问题 我怀疑这是我的 CSS 文件包含方式的问题 因为我知道 Firefox 对于跨域导入不太友好 但这只是静态HTML 不存在跨域问题 在
  • unpack_from 需要至少 1164 字节的缓冲区 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我正在使用 struct 来解析固定宽度字符串 但是 我在处理大于 1000 字节的固定宽度字符串时遇到了一些麻烦 例如
  • 交互设计、视觉设计、网页设计、UX设计、UI设计、UI开发之间有什么区别? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 交互设计 视觉设计 网页设计 UX设计 UI设计 UI开发之间有什么区别 BTB 下面找到的链接回答了 UI 与 UX 的问题 htt
  • Apache Flink AWS S3 Sink 是否需要 Hadoop 进行本地测试?

    我对 Apache Flink 比较陌生 我正在尝试创建一个简单的项目 将文件生成到 AWS S3 存储桶 根据文档 我似乎需要安装 Hadoop 才能执行此操作 如何设置本地环境来测试此功能 我在本地安装了 Apache Flink 和
  • Next.js:嵌套动态路由的 getStaticPaths

    想象一下你有这样的数据结构 const data posts id 1 title Post 1 slug post 1 id 2 title Post 2 slug post 2 comments id 1 postId post 1 t
  • KDB:字符串与表的比较

    我有一张表 bb bb key1 0 1 2 1 7 col1 1 2 3 4 5 col2 5 4 3 2 1 col3 11 22 33 44 55 如何进行字符串的关系比较 假设我想获取 col3 小于或等于 33 的记录 selec
  • ssl 证书代码异常

    我与 sslStream 建立了客户端服务器套接字连接 但当代码到达行时 服务器上出现异常作为服务器进行身份验证我在互联网上搜索 但找不到为什么会发生这种情况的好答案 我在项目中创建了 pfx 测试文件 并为其设置了一个简单的密码 我不知道
  • codeigniter 中漂亮的 url 设置

    我有控制器 package 函数 tour package 和参数 1 的网址 http www mysite in package tour packages 1 http www mysite in package tour packa
  • SQL数值数据类型截断值?

    我真的希望那里的一些 SQL 专家可以帮助解决这个问题 如果之前已经回答过这个问题 我深表歉意 我确实尝试找到一篇类似的帖子 但无济于事 declare theanswer numeric 38 16 select theanswer 0
  • Facebook FQL 查询使所有用户在线

    我在本地 MySQL 数据库中保存了我的应用程序的所有用户的记录 我拥有获取用户在线状态所需的所有相关信息 UID access token并授予extended permission 如何获取所有用户的在线状态 我目前使用的方法是分别查询
  • 无法在 iOS 4 中播放视频

    我已经编写了在 iPhone OS 3 1 3 中播放视频的代码 并且视频播放正常 但是当我尝试使用相同的代码播放视频时 视频在 iOS 4 中无法播放 我知道 iOS 4 的媒体播放器框架已更改 有什么方法可以在不同的操作系统上播放视频而
  • 您是否发现本机 JSON 实现中存在任何错误? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何创建弹出窗口以在rails 3中创建新记录

    我们有一个要求 网页显示连接几个表的所有记录 我们有一个 添加按钮 单击该按钮后 我必须显示一个弹出窗口 用户将在其中输入必要的详细信息 弹出窗口将有两个按钮 保存 和 取消 单击 保存 按钮 应验证字段 如果所有验证均通过 则将记录保存到
  • “子例程条目中的宽字符” - UTF-8 编码的西里尔文字作为字节序列

    我正在开发一个带有大字典的 Android 文字游戏 这些单词 超过 700 000 个 作为单独的行保存在文本文件中 然后放入 SQLite 数据库中 为了保护我的字典 我想用 md5 对所有长度超过 3 个字符的单词进行编码 我不会混淆
  • http-proxy-middleware 不转发完整路径

    我正在尝试将 BrowserSync 配置为在服务器模式下工作 并将我的 API 请求代理到在同一计算机上不同端口上运行的后端 使用http 代理中间件 https github com chimurai http proxy middle
  • Python ast.literal_eval 在字典字符串上不起作用(SyntaxError:无效语法)

    我正在尝试使用 JSON 数据处理数据集 然而 数据未经解析就已写入文件 这意味着 python 字典作为字符串写入文件中 而不是作为字符串写入 JSON 对象 我找到了一个模块 AST 它可以使用以下命令再次将字符串转换为字典 ast l
  • docker --Windows 的卷格式

    我正在尝试使用我们在工作中使用的 shell 脚本来设置我们的开发环境 并将其重新调整为通过 Git Bash 在我的 Windows 环境中工作 shell脚本中启动容器的方式如下 docker run detach name serve
  • 在 Xcode 4.2 中的 UIWebView 中加载网页 - 如何正确连接 IBOutlet 并确保网页加载?

    大多数有关在 iPhone 应用程序中嵌入 UIWebView 的教程都基于旧版本的 Xcode 这是一个例子 http howtomakeiphoneapps com uiwebview tutorial 239 http howtoma
  • Launch4J - 如何将依赖的 jar 附加到生成的 exe

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