-1

在开始描述我如何得到这个错误之前,这里有一些重要信息:

  1. 在我的项目中使用 module-info.java 是必不可少的,因为如果不使用它,jpackage 将无法工作。
  2. 我正在使用 SDK 14.0.2(这是允许使用包的最低版本)
  3. 每一条评论都将不胜感激;但是,如果您要评论与使用特定 VM 参数相关的内容,我请您按 ctrl+F 来检查我是否已经在使用您要建议的参数 - 因为有一堆 VM 参数在我的 build.gradle-

好的,让我们来看看我的问题:

首先,关注下面的 VM 参数:

"--add-opens=java.base/java.lang.reflect=com.jfoenix",

如果我不使用这个参数,程序运行时会弹出如下错误:

java.lang.reflect.InaccessibleObjectException: Unable to make boolean java.lang.reflect.AccessibleObject.setAccessible0(boolean) 
accessible: module java.base does not "opens java.lang.reflect" to module com.jfoenix

重要 -> 这是我的视图在不使用提到的 VM 参数的情况下显示的方式(我们称之为图像 1): https ://snipboard.io/QJ5Fdc.jpg

“好吧,那你为什么不直接使用 VM 参数呢?” 好问题!好吧,让我们将它添加到我的 VM 参数中并再次运行该程序。

这样做之后,这就是我现在的视图(我们称之为图 2):https ://snipboard.io/fbhGxw.jpg

伟大的!这正是我的看法(请注意,考虑到它按预期工作,这次我没有错误)。

所以,在一切正常的情况下,我终于可以继续运行我的 jpackage gradle 任务了。这样做之后,事情就不再有意义了,因为在通过 .exe(由 jpackage 生成)执行我的程序之后,我的视图看起来像“图像 1”视图,不管我的项目在我使用“运行” gradle 任务。

关于为什么会发生这种情况的任何想法?(我的猜测是我的 module-info.java 是解决它的关键,因为每次我删除一个“opens”语句,例如:“opens my.package.name to javafx.fxml”,程序让我几乎相等误差)。

让我知道是否需要任何代码示例。我们将不胜感激所有帮助。谢谢!

编辑:相关的 GitHub 问题:在此处输入链接描述

4

1 回答 1

0

我不知道 jpackage gradle 任务是如何工作的,我通过控制台在 jdk 中使用 jpackage 工具,并在创建包时使用了这个参数

--java-options "--add-opens com.gluonhq.scenebuilder.kit/com.oracle.javafx.scenebuilder.kit.util.control.paintpicker=javafx.fxml --add-opens com.gluonhq.scenebuilder.kit/com.oracle.javafx.scenebuilder.kit.util.control.paintpicker.colorpicker=javafx.fxml"

在那里,我打开了从场景构建器工具包到 javafx.fxml 的 PaintPicker
如您所见,我必须打开两个包(它们实际上是五个,但放在这里太多了),您必须指定--add-opens要打开的每个包

我将用于使用 jpackage 打包应用程序的代码 y

jpackage.exe 
    --module-path 
        .;D:\builds\ikonlibrowser\target\ikonlibrowser.jar;
        D:\builds\ikonlibrowser\libs\icons\ikonli-antdesignicons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-bootstrapicons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-boxicons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-bpmn-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-captainicon-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-carbonicons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-codicons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-coreui-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-dashicons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-devicons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-elusive-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-entypo-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-evaicons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-feather-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-fileicons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-fluentui-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-fontawesome-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-fontawesome5-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-fontelico-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-foundation-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-hawcons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-icomoon-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-ionicons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-ionicons4-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-jamicons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-ligaturesymbols-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-lineawesome-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-linecons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-maki-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-maki2-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-mapicons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-material-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-material2-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-materialdesign-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-materialdesign2-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-medicons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-metrizeicons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-microns-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-ociicons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-octicons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-openiconic-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-paymentfont-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-prestashopicons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-remixicon-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-runestroicons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-simpleicons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-simplelineicons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-subway-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-themify-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-typicons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-unicons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-weathericons-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-websymbols-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-whhg-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-win10-pack-12.2.0.jar
D:\builds\ikonlibrowser\libs\icons\ikonli-zondicons-pack-12.2.0.jar
        D:\builds\ikonlibrowser\libs\scenebuilder-kit-16.0.0.jar;
        D:\builds\ikonlibrowser\libs\jfoenix-9.0.10.jar
        D:\builds\ikonlibrowser\libs\ikonli-core-12.2.0.jar;
        D:\builds\ikonlibrowser\libs\ikonli-javafx-12.2.0.jar
    --module jcc.app.ikonlibrowser/jcc.app.ikonlibrowser.Main 
    --name "Ikonli Browser" -d D:\builds\ikonlibrowser
    --win-dir-chooser 
    --input D:\builds\ikonlibrowser\app
    --vendor jCC 
    --app-version "1.0.0"
    --java-options 
        "--add-opens com.gluonhq.scenebuilder.kit/com.oracle.javafx.scenebuilder.kit.util.control.paintpicker=javafx.fxml
        --add-opens com.gluonhq.scenebuilder.kit/com.oracle.javafx.scenebuilder.kit.util.control.paintpicker.colorpicker=javafx.fxml
        --add-opens com.gluonhq.scenebuilder.kit/com.oracle.javafx.scenebuilder.kit.util.control.paintpicker.rotator=javafx.fxml
        --add-opens com.gluonhq.scenebuilder.kit/com.oracle.javafx.scenebuilder.kit.util.control.paintpicker.slider=javafx.fxml
        --add-opens com.gluonhq.scenebuilder.kit/com.oracle.javafx.scenebuilder.kit.util.control.paintpicker.gradientpicker=javafx.fxml"

当然这只是一行。
现在我将逐步解释它:
--module-path此参数用于指定您的应用程序使用的所有模块的路径。包括应用程序 .jar
--module这个参数指定了应用程序的主类。首先是模块名称,然后是类全名。
--name这是指定应用程序名称。
-d指定输出路径。
--win-dir-chooser提供安装打包应用程序时选择安装路径的选项
--input指定包含应用程序外部资源的文件夹
--vendor供应商名称。也许你的名字
--app-version你的应用程序
--java-options的版本 jvm 选项

我希望它对你有用,抱歉耽搁了。

于 2021-04-28T15:36:48.903 回答