当前位置: 首页 > 知识库问答 >
问题:

包有Launch4j VM参数路径的JavaFX项目

逄嘉木
2023-03-14

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

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

    null
    null
    null

对于第二个参数,我没有任何问题,因为它不需要指向一个lib的路径,但是第一个参数需要,而且我不能简单地使用静态路径(比如:c:\myappname\lib),因为用户可以在他想要的地方安装应用程序,并且也会有这个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
  • --module-path“\lib”--add-modules javafx.controls,javafx.graphics,javafx.fxml

共有1个答案

范嘉
2023-03-14

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

也就是说,这是一个关于如何在JavaFX项目中使用JPackage的Windows 10操作系统小指南。有关更多信息,请阅读文档。JPackage可用于macOS和Linux,但我使用的是Windows10,因此指南是专门针对它的。

  • 转到以下链接(官方)并下载JavaFX Windows JMODs;
  • 对于JPackage,还需要下载WiX工具集并安装它;
  • 为项目创建一个可运行的Jar。我发现使用runnable Jar而不是普通Jar更容易,因为以后不必指定主类。这是个人喜好,而不是您必须做的事情;
  • 尝试在命令行/Windows PowerShell中运行jpackage-h以查看jpackage是否工作。如果您得到术语'jpackage'不被识别为cmdlet的名称,那么打开环境变量,并在系统变量/path中从Java JDK中添加bin文件夹的位置。一种简单的方法是在Windows搜索栏中搜索environment,然后选择编辑系统环境变量,然后选择environment variables...
  • 之后可以运行:

jpackage-t exe--名称“myapp”--app-version 1.0--输入“d:\projects\jars\”--dest“d:\projects\executable”--主-jar“guide.jar”--图标“d:\projects\icons\guide.ico”--模块-路径“d:\projects\javafx\javafx-jmods-16”--添加-模块javafx.controls,javafx.graphics,javafx.fxml,javafx.base-

  • 在我的例子中,我使用的是我的个人安装程序应用程序,所以在运行JPackage后,我要做的是运行它创建的exe文件,然后从它创建的文件夹中创建该文件夹(exe文件、应用程序和运行时文件夹)中的文件的副本,并将它们与项目所需的所有其他文件一起粘贴到该位置。这样我就可以测试它,如果它能正常工作,我就会继续为它创建安装程序,就像我说的那样,使用我自己的安装程序应用程序。

这个命令有更多的选项可以添加到它中,所以请阅读文档,并通过运行jpackage-h获得完整的选项列表。

 类似资料:
  • 主要内容:示例-1,实例-2,实例-3,实例-4JavaFX有其他内置的形状,如: Arc Circle CubicCurve Ellipse Line Path Polygon Polyline QuadCurve Rectangle SVGPath Text 以下代码显示了如何创建路径(Path)。 上面的代码生成以下结果。 元素实际上从类扩展,它仅在对象的上下文中使用。 所以不能实例化一个类放在场景图中。使用作为后缀的类是元素,而不是节点

  • 问题内容: 我在jsp页面中有一个img标签,其中src路径要求传递标头参数来获取图像。我们如何实现呢? 问题答案: 首先,您需要发出一个设置头文件的ajax请求。然后,您需要使用一些HTML5 API将接收到的二进制数据转换为base64。最后,使用协议和base64数据设置映像src 。 资料来源: https://developer.mozilla.org/zh- CN/docs/Web/A

  • 我在编码URL时遇到问题。我的url可能包含一个路径参数,其中可能包含斜杠“/”。我需要将此路径参数发送到外部API。这始终是加密编码的。但是我有问题编码'/'。除了'/'之外,其他一切都在编码。 示例: 在上述示例中,未编码的路径参数为: 当我对上述路径参数进行编码时,我希望url为: 但结果是: 输入: 预期产出: 我正在使用okHttp客户端创建请求。是否有任何库只对未编码的字符进行编码,而

  • 我在JavaFX中创建了一个迷宫游戏,用户可以创建自己的迷宫并玩它。迷宫是使用带有CSS IDs的按钮构建的,CSS IDs取决于关卡临时存储的二维数组。 问题出现在项目的下一部分。我创建了一个生成随机迷宫的算法。为了使水平成为可能,我需要检查迷宫是否可解(即,你可以从起点(0,3)到终点(6,3))。 我使用相同的显示算法创建了一个单独的项目,类如下: 主要.java Runner.java M

  • 我在eclipse中有一个java项目,我在ec利pse之外使用ivy依赖项管理器,所以我的目录结构中充满了各种jar文件。有没有一种简单的方法将我的eclipse项目的路径指向常春藤目录并拾取所有jar文件? 我试图避免将每个单独的jar拉到我的eclipse项目目录中,并希望有更好的方法。

  • 我有3个项目,ProjectB,ProjectC。 当我构建ProjectB时,它没有任何问题。但是当我试图构建ProjectA时,它在控制台上出现以下错误而失败。 评估项目“:ProjectB”时出现问题。在项目:ProjectB中找不到路径为:ProjectC的项目。 build.gradle-ProjectC settings.gradle-ProjectC build.gradle - 项