javafx - JavaFX 12 中的 WebConsoleListener IllegalAccessError

标签 javafx

我最近下载了最新的 JavaFX SDK 12,我希望在我的 JavaFX WebView 中拦截控制台消息。

所以,我有这个

WebConsoleListener.setDefaultListener((webView, message, lineNumber, sourceId) -> {
       //////// I am listening for a specific console message here in my 
      ///webview
  });

但我不断得到


Caused by: java.lang.IllegalAccessError: class rumbler.launcher.ApplicationLoader (in unnamed module @0x5c4c6905) cannot access class com.sun.javafx.webkit.WebConsoleListener (in module javafx.web) because module javafx.web does not export com.sun.javafx.webkit to unnamed module @0x5c4c6905

这是我的build.gradle 文件

javafx {
    version = "12.0.1"
    modules = ['javafx.base', 'javafx.controls', 'javafx.web']
}

这是我的VM OPTIONS

--module-path "path_to_\javafx-sdk-11.0.2\lib" --add-modules javafx.controls,javafx.fxml,javafx.web,javafx.base

.我错过了什么吗?

最佳答案

您正在使用私有(private) API,不建议这样做。

无论如何,错误信息很清楚:

module javafx.web does not export com.sun.javafx.webkit to unnamed module @0x5c4c6905

每当你想从你的项目中访问一些非公开的包(无论是模块化还是非模块化),你都需要使用--add-exports:

The command line option --add-exports $module/$package=$readingmodule exports $package of $module to $readingmodule. Code in $readingmodule can hence access all public types in $package but other modules can not. [source].

所以在这种情况下,解决方案很简单:

--add-exports javafx.web/com.sun.javafx.webkit=ALL-UNNAMED \
--module-path "path_to_\javafx-sdk-11.0.2\lib" \
--add-modules javafx.web,javafx.fxml

关于javafx - JavaFX 12 中的 WebConsoleListener IllegalAccessError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57167872/

相关文章:

JavaFX+MVC。如何隐藏/显示多个窗口?

javafx - 如何为javafx线同时设置颜色、宽度和绘制虚线?

JavaFx 不接受媒体源文件

java - 渐变之间平滑淡入淡出

java - Spring Boot jpa 与 javafx 服务集成 null

java - javafx 中的图像

JavaFX如何将对话框/警报带到屏幕前面

java - 如何在 Netbeans 上查找 Java 项目中所有函数的用法?

java - 在 fxml 中定义您的自定义类

java - 如何加载 JavaFX 程序的 FXML URL?