我最近下载了最新的 JavaFX SDK 12,我希望在我的 JavaFX WebView 中拦截控制台消息。
所以,我有这个
WebConsoleListener.setDefaultListener((webView, message, lineNumber, sourceId) -> {
//////// I am listening for a specific console message here in my
///webview
});
Run Code Online (Sandbox Code Playgroud)
但我不断得到
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
Run Code Online (Sandbox Code Playgroud)
这是我的build.gradle文件
javafx {
version = "12.0.1"
modules = ['javafx.base', 'javafx.controls', 'javafx.web']
}
Run Code Online (Sandbox Code Playgroud)
这是我的 VM OPTIONS
--module-path "path_to_\javafx-sdk-11.0.2\lib" --add-modules javafx.controls,javafx.fxml,javafx.web,javafx.base
Run Code Online (Sandbox Code Playgroud)
.我错过了什么吗?
您正在使用私有 API,不建议这样做。
不管怎样,错误信息很清楚:
模块 javafx.web 不会将 com.sun.javafx.webkit 导出到未命名模块 @0x5c4c6905
每当您想要从项目中访问一些非公开的包(无论是模块化还是非模块化)时,您都需要使用--add-exports:
命令行选项
--add-exports $module/$package=$readingmodule导出$packageto$module。$readingmodule因此, in 中的代码$readingmodule可以访问 in 中的所有公共类型$package,但其他模块则不能。[来源]。
所以在这种情况下,解决方案很简单:
--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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1073 次 |
| 最近记录: |