使用 Launch4j VM 参数路径包装的 JavaFX 项目

2023-12-26

对于我的一些项目,我使用 JavaFX 作为 GUI,在 JavaFX 被拆分为 OpenJFX 之前,我没有遇到任何问题。现在我想使用最新版本的 JDK 和 JavaFX,因此必须进行一些更改。

在 Eclipse 中工作时,一切都按预期运行,我添加了 JavaFX 作为库,但是当我尝试使用 Launch4j 从可运行的 jar 创建 exe 文件时遇到一些问题。在 Eclipse 中我使用 2 个 VM 参数:

  1. --module-path "lib 文件夹的路径\" --add-modules javafx.controls,javafx.graphics,javafx.fxml
  • 这是为了引起原因:java.lang.NoClassDefFoundError:javafx/application/Application
  1. --add-opens javafx.graphics/com.sun.glass.ui=ALL-UNNAMED
  • 这是为了无法访问类 com.sun.glass.ui.Window(在模块 javafx.graphics 中),因为模块 javafx.graphics 不会将 com.sun.glass.ui 导出到未命名模块

对于第二个参数,我没有任何问题,因为它不需要库的路径,但第一个参数需要,而且我不能简单地使用静态路径(例如:C:\MyAppName\lib)因为用户可能会在他想要的地方安装应用程序,并且也会有库。话虽这么说,我可以使用什么作为相对路径,以便 Launch4j 知道该怎么做?这lib文件夹与 exe 位于同一位置。

我尝试了以下方法,但没有成功(我已将它们添加到 JVM 选项框中):

  • --module-path "%EXEDIR%\lib" --add-modules javafx.controls,javafx.graphics,javafx.fxml
  • --module-path "./lib" --add-modules javafx.controls,javafx.graphics,javafx.fxml
  • --模块路径“\lib”--添加模块javafx.controls,javafx.graphics,javafx.fxml

这个问题可能有一些细节可能与我需要的不相关,但也许其他人也有同样的问题,我想添加它们,以便在我得到答案时也能帮助他们。


按照@James_D的建议,我实际上使用了jpackage代替Launch4j更好的是,它不仅可以创建 exe 文件,而且还可以通过以特定于平台的格式创建本机包来消除用户安装 Java 的需要。

话虽如此,这是有关如何使用 Windows 10 操作系统的小指南jpackage与 JavaFX 项目。欲了解更多信息,请阅读文档 https://docs.oracle.com/en/java/javase/14/jpackage/packaging-overview.html#GUID-C1027043-587D-418D-8188-EF8F44A4C06A. jpackage适用于 macOS 和 Linux,但我使用的是 Windows 10,因此该指南是专门针对它的。

  • 前往以下链接(官方)并下载JavaFX Windows jmods https://gluonhq.com/products/javafx/;
  • For jpackage你还需要下载WiX 工具集 https://wixtoolset.org/,然后安装;
  • 为您的项目创建一个可运行的 Jar。我发现使用 runnable Jar 而不是普通的 jar 更容易,因为您不必稍后指定主类。这是个人喜好,而不是您必须做的;
  • 尝试跑步jpackage -h在命令行/Windows PowerShell 中查看是否jpackage工作中。如果你得到术语“jpackage”未被识别为 cmdlet 的名称,然后打开环境变量 and in 系统变量/路径添加 Java JDK 中 bin 文件夹的位置。一个简单的方法是通过搜索环境在 Windows 搜索栏中,然后选择编辑系统环境变量, then 环境变量...
  • 之后你可以运行:

jpackage -t exe --name "Name of app" --app-version 1.0 --input "Location of runnable Jar" --dest "Location where the exe will be created" --main-jar "Name of the runnable Jar, with extention .jar at the end" --icon "Complete location where the icon of the app is .ico" --module-path "Location of jmods folder" --add-modules javafx.controls,javafx.graphics,javafx.fxml,javafx.base --win-shortcut --win-menu

Example:

jpackage -t exe --name "MyApp" --app-version 1.0 --input "D:\Projects\Jars\" --dest "D:\Projects\Executable" --main-jar "Guide.jar" --icon "D:\Projects\Icons\guide.ico" --module-path "D:\Projects\JavaFX\javafx-jmods-16" --add-modules javafx.controls,javafx.graphics,javafx.fxml,javafx.base --win-shortcut --win-menu

  • 就我而言,我正在使用我的个人安装程序应用程序,所以运行后我正在做什么jpackage,是我正在运行它创建的 exe 文件,然后从它创建的文件夹中复制该文件夹中的文件(exe file, app and runtime文件夹)并将它们与我的项目的所有其他必需文件一起粘贴到该位置。这样我就可以测试它,如果它有效,我将继续为其创建安装程序,就像我说的,使用我自己的安装程序应用程序。

该命令有很多可以添加的选项,因此请阅读文档 https://docs.oracle.com/en/java/javase/14/jpackage/packaging-overview.html#GUID-786E15C0-2CE7-4BDF-9B2F-AC1C57249134,以及运行选项的完整列表jpackage -h.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Launch4j VM 参数路径包装的 JavaFX 项目 的相关文章

  • 如何作为应用程序发布到页面?

    所以 我有一个应用程序 Facebook 应用程序实体 并且我有一个页面 我想使用应用程序通过java代码 通过restfb或任何其他建议 发布到页面 看起来我错过了页面授予应用程序发布权限的阶段 不知道该怎么做 谢谢你们 乌里 您只能 作
  • 使用 Apache POI Excel 写入特定单元格位置

    如果我有一个未排序的参数 x y z 列表 是否有一种简单的方法将它们写入使用 POI 创建的 Excel 文档中的特定单元格 就好像前两个参数是 X 和Y 坐标 例如 我有如下行 10 4 100 是否可以在第 10 行第 4 列的单元格
  • 本地开发的 Azure Functions 扩展包版本问题

    我有一个带有队列触发器的 Java 11 Azure 函数 该函数在部署到 Azure 时按预期工作 并正确从定义的服务总线主题中提取消息 但是 运行相同的功能locally除非我回滚版本 否则不起作用Azure Functions 绑定扩
  • 无法访问“不安全”java方法的java表达式语言

    我正在开发一个项目 让用户向服务器提交小 脚本 然后我将执行这些脚本 有很多脚本语言可以嵌入到Java程序中 例如mvel ognl uel clojure rhino javascript等 但是 据我所知 它们都允许脚本编写者调用Jav
  • 这个等待通知线程语义的真正目的是什么?

    我刚刚遇到一些代码 它使用等待通知构造通过其其他成员方法与类中定义的线程进行通信 有趣的是 获取锁后 同步范围内的所有线程都会在同一锁上进行定时等待 请参见下面的代码片段 随后 在非同步作用域中 线程执行其关键函数 即 做一些有用的事情1
  • 如何在 MSSQL 中获取 CURRENT_DATE?

    我正在使用 jpa 3 o 和 Hibernate 我有一个命名查询 SELECT COUNT wt id FROM WPSTransaction wt WHERE wt createdDate gt CURRENT DATE WPSTra
  • 在java中将字符串日期转换为美国格式

    我有下面的代码 其中日期为字符串类型 我必须将其设置为美国格式 所以下面我已经展示了它 private static final SimpleDateFormat usOutputDate new SimpleDateFormat MM d
  • 具有 JPA 持久性的 Spring 状态机 - 存储库使用

    我试图弄清楚如何轻松使用 Spring 状态机 包括使用 JPA 进行持久化 这是我正在处理的问题 不兼容的数据类型 工厂和持久性 在程序的某个时刻 我想使用连接到用户的状态机 有用于此目的的存储库 项目spring statemachin
  • 正确签名的 JNLP 应用程序无法在 Java 7 中运行

    我有一个 JNLP 应用程序 由于证书过期需要更新 我有一个经过 CA 验证的新证书 我已将新证书导入到我的密钥库中 我已导入完整的证书链 我的构建文件对构建中的 jar 进行签名和时间戳
  • 嵌套字段的 Comparator.comparing(...)

    假设我有一个这样的域模型 class Lecture Course course getters class Course Teacher teacher int studentSize getters class Teacher int
  • 如何从字符串中解析一个大整数? [复制]

    这个问题在这里已经有答案了 我有一个这样的方法 Integer parseInt myInt 不是这个整数变得很长 我得到以下异常 java lang NumberFormatException For input string 40001
  • 使用单独的线程在java中读取和写入文件

    我创建了两个线程并修改了 run 函数 以便一个线程读取一行 另一个线程将同一行写入新文件 这种情况会发生直到整个文件被复制为止 我遇到的问题是 即使我使用变量来控制线程一一执行 但线程的执行仍然不均匀 即一个线程执行多次 然后控制权转移
  • 删除 JFX 中选项卡后面的灰色背景

    So is there any way to remove the gray area behind the tab s 我尝试过用 CSS 来做到这一点 但没有找到方法 要设置 tabpane 标题的背景颜色 请在 CSS 文件中写入 t
  • 如何使用Gson仅从Json反序列化某些特定字段?

    我有以下 JSON 字符串 channel bvmt initValues data value instrumentIds TN0007250012 TN0007500010 instruments mnemonic ADWYA marc
  • java.lang.IllegalStateException - 提交响应后无法创建会话

    我在我的项目中使用 JSF PrimeFaces 我为此准备了一个Maven项目 当我编译项目并加载主页后 我收到以下异常 java lang IllegalStateException Cannot create a session af
  • Axis2 错误:要输出的文本中的空白字符 (0x4) 无效

    我创建了一个 Java 客户端 使用 Axis2 1 7 6 作为代码生成器与 SOAP Web 服务进行交互 问题在于客户端的某些输入抛出异常并显示以下消息 org apache axis2 AxisFault Invalid white
  • 如何使用自定义 JDK 构建 Jenkins 项目?

    我有一个常规的 Jenkins 实例 运行一些多分支管道 该实例在 JDK 11 上运行 因为 Jenkins 并不真正支持更高版本 没关系 但不好的是 我的所有管道似乎也都受到 Java 11 的限制 Jenkins 仅使用它自己也使用的
  • 如何建立与 FileZilla Server 1.2.0 的 FTPS 数据连接

    使用 Apache commons net 的 Java FTPSClient 进行会话恢复是一个已知问题 会话恢复是 FTPS 服务器数据连接所需的一项安全功能 Apache FTPSClient 不支持会话恢复 并且 JDK API 使
  • Java中单例的其他方式[重复]

    这个问题在这里已经有答案了 只是我在考虑编写单例类的其他方法 那么这个类是否被认为是单例类呢 public class MyClass static Myclass myclass static myclass new MyClass pr
  • mybatis:使用带有 XML 配置的映射器接口作为全局参数

    我喜欢使用 XML 表示法来指定全局参数 例如连接字符串 我也喜欢 Mapper 注释 当我尝试将两者结合起来时 我得到这个例外 https stackoverflow com questions 4263832 type interfac

随机推荐

  • 在 android studio 中编译项目时出现重复条目​​:com/android/volley/AuthFailureError.class

    我正在使用外部库 payu Money sdk 和 linkedin sdk 两者都使用 volley 库 在编译项目时会给出 AuthFailureError class 的重复条目 错误 任务 app packageAllDebugCl
  • AndroidHttpClient 和 DefaultHttpClient

    这两者之间有很大区别吗 最好使用哪一个 基于Android源码 https github com CyanogenMod android frameworks base blob gingerbread core java android
  • const 后出现意外的令牌

    当我尝试指定一个常量时 我 在 React 中遇到了意外的令牌错误 但我似乎无法弄清楚原因 我的代码非常简单 并且我遵循了react bootstrap示例here https react bootstrap github io compo
  • 如何在使用 fstream 打开文件时截断文件

    我知道可以用以下命令截断文件 std fstream fs mypath std fstream out std fstream trunc 但我需要读取文件 截断它 然后使用相同的文件句柄写入新内容 因此整个操作是原子的 任何人 我不认为
  • Rails 用户:您使用什么异常通知软件?

    我见过 Ryan Bates 谈论过异常记录器和异常通知 还有其他好的可以考虑吗 您喜欢和不喜欢这些内容的哪些方面 另外 如果您捕获这些异常通知程序 它们是否会记录异常 Thanks 我强烈推荐使用Hoptoad http hoptoada
  • wget 拒绝仍然下载文件

    我只想要文件夹结构 但我不知道如何使用 wget 相反 我正在使用这个 wget R pdf css gif txt png np rhttp example com http example com 它应该拒绝 R 之后的所有文件 但在我
  • 为 kendo ui 网格列定义自定义模板

    我有一个 kendo ui 网格 我想绑定图像 这是我的代码 model List
  • APScheduler(高级 Python 调度程序)导入错误:没有名为调度程序的模块

    我遇到以下导入错误 导入错误 没有名为调度程序的模块 当我运行以下 python 脚本时 Demonstrates how to use the blocking scheduler to schedule a job that execu
  • 如何在React Native中离线捆绑iOS?

    任何人都可以解释一下如何从 反应本机 代码生成 iOS 应用程序的离线包吗 我已经尝试过了如何为react native生成 ipa文件 https stackoverflow com questions 41970435 how to g
  • 如何递归连接字符串元素列表

    我正在查看准备考试的示例 坦率地说 我不太擅长递归或列表 尤其是列表 给定一个节点类 它将保存字符串 不是通用的 编写一个名为 concat 的递归 java 函数 该函数采用表示链表头的节点 并返回表示链表中所有元素的串联的字符串 如果链
  • 对列表进行子集化 - plyr 方式?

    我经常拥有按一个或多个变量分组的数据 每组内有多个注册 从数据框中 我希望根据各种标准选择组 我通常使用 split sapply rbind 方法 其中使用逻辑向量从列表中提取元素 这是一个小例子 我从一个包含一个分组变量 组 的数据框开
  • 如何在 Jenkins (VS2012) 中运行发布/点击一次构建步骤

    我们有一个简单的 C 解决方案 VS 2012 它有一个发布步骤 单击一次向导 使用 ftp 我已经设置了一个 jenkins 构建项目来在 SVN 触发器上构建它 通过 MSBuild 我无法让它构建 通过 MSBuild 发布 单击一次
  • WPF 嵌套 Scrollviewers - 将控制权交还给父级 scollviewer

    这就是我的控制树的样子
  • Android P 预览上的 toast View 的 IllegalStateException

    在尝试发布我的应用程序进行生产时 预发布报告通知我 Pixel 2 Android P Preview 设备上出现错误 该错误与我的自定义 toast 消息有关 该消息表示视图 已添加到窗口管理器 java lang IllegalStat
  • 不用sudo重启nginx?

    所以我希望能够在不输入任何密码的情况下进行 cap deploy 我已经设置了所有私钥 这样我就可以很好地访问远程服务器 并且现在使用 svn over ssh 所以那里没有密码 我还有最后一个问题 我需要能够重新启动 nginx 现在我有
  • 导入 javax.validation.constraints.NotEmpty;不工作[重复]

    这个问题在这里已经有答案了 我目前有一个 java spring boot 应用程序 我将版本 在代码中 从 2 1 4 更改为 2 3 0 但结果我遇到了错误error package javax validation constrain
  • android服务导出属性?

    我对android平台还很陌生 我想导出我的服务以供公众使用 我在开发人员文档中找到了一些内容 android exported其他应用程序的组件是否可以调用该服务或与其交互 如果可以 则为 true 如果不能 则为 false 当值为 f
  • 为闪亮仪表板中的滑块添加不同的静态颜色

    我是闪亮的新手 我想为滑块提供静态颜色 无论闪亮仪表板中选择的范围如何 我想要滑块有不同的颜色 如下所示 例如 0 到 40 红色 40 到 60 蓝色 60 到 100 绿色 请帮我解决这个问题 我的代码 library shiny li
  • 为什么更喜欢模板方法而不是依赖注入?

    我一直在阅读 Gamma 等人写的 设计模式 我有一个关于模板方法与依赖注入相比的问题 使用模板方法 您可以使用为所需操作或计算提供替代方案的策略来 模板化 类 因此 您不需要从多种替代方案中选择一种策略并将该策略编码到类中 而是允许类的用
  • 使用 Launch4j VM 参数路径包装的 JavaFX 项目

    对于我的一些项目 我使用 JavaFX 作为 GUI 在 JavaFX 被拆分为 OpenJFX 之前 我没有遇到任何问题 现在我想使用最新版本的 JDK 和 JavaFX 因此必须进行一些更改 在 Eclipse 中工作时 一切都按预期运