JavaFX 12中的WebConsoleListener IllegalAccessError

时间:2019-07-23 15:46:23

标签: 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

。我想念什么吗?

1 个答案:

答案 0 :(得分:3)

您使用的是私有API,不建议使用。

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

  

模块javafx.web不会将com.sun.javafx.webkit导出到未命名的模块@ 0x5c4c6905

每当要从项目中访问某些未公开的软件包(模块化或非模块化)时,都需要使用--add-exports

  

命令行选项--add-exports $module/$package=$readingmodule$package中的$module导出到$readingmodule。因此,$readingmodule中的代码可以访问$package中的所有公共类型,而其他模块则不能。 [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