程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了模块 java.base 不会“打开 java.lang.reflect”到模块 com.jfoenix 关于为什么会发生这种情况的任何想法? (我的猜测是我的 module-info.java 是解决它的关键,因为每次我删除一个“opens”语句,例如:“opens my.package.name to javafx.fxml”,程序让我几乎相同的错误)。大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

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

开发过程中遇到模块 java.base 不会“打开 java.lang.reflect”到模块 com.jfoenix 关于为什么会发生这种情况的任何想法? (我的猜测是我的 module-info.java 是解决它的关键,因为每次我删除一个“opens”语句,例如:“opens my.package.name to javafx.fxml”,程序让我几乎相同的错误)。的问题如何解决?下面主要结合日常开发的经验,给出你关于模块 java.base 不会“打开 java.lang.reflect”到模块 com.jfoenix 关于为什么会发生这种情况的任何想法? (我的猜测是我的 module-info.java 是解决它的关键,因为每次我删除一个“opens”语句,例如:“opens my.package.name to javafx.fxml”,程序让我几乎相同的错误)。的解决方法建议,希望对你解决模块 java.base 不会“打开 java.lang.reflect”到模块 com.jfoenix 关于为什么会发生这种情况的任何想法? (我的猜测是我的 module-info.java 是解决它的关键,因为每次我删除一个“opens”语句,例如:“opens my.package.name to javafx.fxml”,程序让我几乎相同的错误)。有所启发或帮助;

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

  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 问题:enter link description here

解决方法

我不知道 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"

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

我把用来打包应用程序的代码 y 放在 jpackage 中

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 选项

希望对你有用,抱歉耽误了。

大佬总结

以上是大佬教程为你收集整理的模块 java.base 不会“打开 java.lang.reflect”到模块 com.jfoenix 关于为什么会发生这种情况的任何想法? (我的猜测是我的 module-info.java 是解决它的关键,因为每次我删除一个“opens”语句,例如:“opens my.package.name to javafx.fxml”,程序让我几乎相同的错误)。全部内容,希望文章能够帮你解决模块 java.base 不会“打开 java.lang.reflect”到模块 com.jfoenix 关于为什么会发生这种情况的任何想法? (我的猜测是我的 module-info.java 是解决它的关键,因为每次我删除一个“opens”语句,例如:“opens my.package.name to javafx.fxml”,程序让我几乎相同的错误)。所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。