gpt4 book ai didi

java - 如何修复使用 JavaFX 12 在 Swing 中创建 JFXPanel 时出现的异常

转载 作者:行者123 更新时间:2023-12-02 01:21:32 25 4
gpt4 key购买 nike

我有一个带有基于 Swing 的 UI 的大型 Java 应用程序,该应用程序使用 JavaFX 通过 JFXPanel 组件在某些窗口的某些部分中呈现视频面板和 WebView 面板。

在 JDK 8 上一切正常,但我正在迁移到 OpenJDK 12 和 JavaFX 12,并且在创建 JFXPanel 时遇到运行时异常。当我调用“new JFXPanel()”时,我收到异常:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalAccessError: class 
javafx.embed.swing.JFXPanel (in unnamed module @0x44bebd15) cannot access
class com.sun.javafx.logging.PlatformLogger (in module javafx.base) because
module javafx.base does not export com.sun.javafx.logging to unnamed module
@0x44bebd15

来自 javafx-sdk-12.0.2 的 javafx.base 和 javafx.swing jar 文件包含在我的 Eclipse 项目和运行时中(以及一些其他 JavaFX jar)。

我正在使用虚拟机参数: --module-path/Library/Java/javafx-sdk-12.0.2/lib --add-modules javafx.controls,javafx.web,javafx.media,javafx.base

这是 JavaFX 12 中的错误还是我做错了什么?

htmlPanel = new JFXPanel() {
public Dimension getPreferredSize() {
return new Dimension(CoreDrawer.scaledSize(width),
CoreDrawer.scaledSize(height));
}

public Dimension getMinimumSize()
{
return getPreferredSize();
}
};

Platform.runLater(new Runnable() { // run on the JavaFX thread
public void run() {
initFX(htmlPanel);
}
});

Platform.setImplicitExit(false);
thePanel.add(htmlPanel);

函数 initFX() 将场景添加到 JFXPanel,但程序未通过“new JFXPanel()”

最佳答案

Slaw 的评论“Use --add-modules javafx.web,javafx.media,javafx.swing”对我有用。需要将 javafx.swing 附加到我的运行配置的“VM 选项”。

关于java - 如何修复使用 JavaFX 12 在 Swing 中创建 JFXPanel 时出现的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57620350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com