猿问

javafx 12 中模块未导出异常

我将 Intellij 与 javafx 12 一起使用,作为一个单独的库。我设法让它发挥作用。我做了一个游戏,图形效果很棒。现在我想创建一个带有一些按钮的菜单。当我尝试将按钮添加到场景的根目录时,它会引发异常,但有以下异常:

Exception in thread "JavaFX Application Thread" java.lang.IllegalAccessError: superclass access check failed: class com.sun.javafx.scene.control.ControlHelper (in unnamed module @0x77b376ef) cannot access class com.sun.javafx.scene.layout.RegionHelper (in module javafx.graphics) because module javafx.graphics does not export com.sun.javafx.scene.layout to unnamed module @0x77b376ef

我用谷歌搜索并找到了一些关于堆栈溢出的解决方案,但这些解决方案对我不起作用。我的命令行参数如下(基于这些解决方案):

--module-path "C:\Program Files\Java\javafx-sdk-11.0.2\lib" \
--add-modules=javafx.swing,javafx.graphics,javafx.fxml,javafx.media,javafx.web,javafx.scene,javafx.controls \
-p "C:\Program Files\Java\javafx-sdk-11.0.2\lib\javafx.base.jar" : \   "C:\Program Files\Java\javafx-sdk-11.0.2\lib\javafx.graphics.jar"  \
--add-exports javafx.graphics=ALL-UNNAMED \
--add-exports javafx.controls/com.sun.javafx.charts=ALL-UNNAMED \
--add-exports javafx.graphics/com.sun.javafx.iio=ALL-UNNAMED \
--add-exports  javafx.graphics/com.sun.javafx.iio.common=ALL-UNNAMED \
--add-exports  javafx.graphics/com.sun.javafx.css=ALL-UNNAMED \
--add-exports  javafx.base/com.sun.javafx.runtime=ALL-UNNAMED \
--add-exports javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED \
--add-exports javafx.graphics/com.sun.javafx.scene.layout=ALL-UNNAMED

谢谢!



慕丝7291255
浏览 158回答 1
1回答

杨魅力

答案就在你的命令行中:--module-path "C:\Program Files\Java\javafx-sdk-11.0.2\lib" \ ... -p "C:\Program Files\Java\javafx-sdk-11.0.2\lib\javafx.base.jar" : \    "C:\Program Files\Java\javafx-sdk-11.0.2\lib\javafx.graphics.jar"  \--module-path这意味着您添加了两次,但只有最后一次有效。因此只有javafx-base和javafx-graphics被添加到模块路径中,因此javafx-controls不是。这解释了异常(与 相关),以及您不必要地添加了所有这些 的com.sun.javafx.scene.control.ControlHelper事实。--add-exports您可能不会使用 Swing、Media 或 Web,因此这个命令行就足够了:--module-path "C:\Program Files\Java\javafx-sdk-11.0.2\lib" \ --add-modules javafx.fxml,javafx.controls这些 VM 选项可以在您的 IDE 中设置。
随时随地看视频慕课网APP

相关分类

Java
我要回答