在开始描述我如何得到这个错误之前,这里有一些重要信息:
- 在我的项目中使用 module-info.java 是必不可少的,因为如果不使用它,jpackage 将无法工作。
- 我正在使用 SDK 14.0.2(这是允许使用包的最低版本)
- 每一条评论都将不胜感激;但是,如果您要评论与使用特定 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 问题:在此处输入链接描述