【问题标题】:WebConsoleListener IllegalAccessError in JavaFX 12JavaFX 12 中的 WebConsoleListener IllegalAccessError
【发布时间】:2019-07-23 15:46:23
【问题描述】:

我最近下载了最新的 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

.我错过了什么吗?

【问题讨论】:

    标签: javafx


    【解决方案1】:

    您正在使用私有 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
    

    【讨论】:

    猜你喜欢
    • 2019-06-14
    • 2021-01-20
    • 2020-01-06
    • 1970-01-01
    相关资源
    最近更新 更多