【问题标题】:How to Start Scenebuilder with Java 11如何使用 Java 11 启动 Scenebuilder
【发布时间】:2019-02-11 01:28:44
【问题描述】:

在通往 Java 11 的路上,我正在检查我的工具包, 其中有 SceneBuilder。

我将 java-11 与 javafx-sdk-11 和 使用

启动 SceneBuilder

/opt/jdk-11/bin/java --module-path javafx-sdk-11/lib --add-modules=javafx.controls,javafx.fxml,javafx.web,javafx.swing -jar scenebuilder- 10.0.0-all.jar

UI 看起来不错,但任何创建场景的尝试都会出现一些错误:

    (java:10329): GLib-GObject-WARNING **: gsignal.c:2451: signal 'expose-event' is invalid for instance '0x7f395831e720' of type 'GtkWindow'
    Sep. 05, 2018 10:26:17 NACHM. com.oracle.javafx.scenebuilder.app.SceneBuilderApp$SceneBuilderUncaughtExceptionHandler uncaughtException
    SEVERE: An exception was thrown:

java.lang.reflect.InaccessibleObjectException: Unable to make void javafx.fxml.FXMLLoader.setStaticLoad(boolean) accessible: module javafx.fxml does not "opens javafx.fxml" to unnamed module @42efe4f4

在 Java 11 中使用 Scenebuilder 的最佳方式是什么?

谢谢,卡斯滕

【问题讨论】:

  • 尝试将--add-opens javafx.fxml/javafx.fxml=ALL-UNNAMED 添加到命令行。问题是 Scene Builder 正在尝试反射访问 FXMLLoader 但模块 javafx.fxml 不允许这样做(因为它不会 opens 将包传递给未命名的模块)。这会在 Java 9 或 10 中导致警告,但 Java 11 现在可能会默认拒绝访问。另一种选择可能是使用--illegal-access=permit,但此选项已标记为在将来的版本中删除。
  • 如果错误报告尚不存在,您可能需要提交一份错误报告。
  • 你好 Slaw,我试过了,但现在在尝试拖放时遇到了一些深层异常:(java:5768): GLib-GObject-WARNING **: gsignal.c:2451: signal 'expose -event' 对于类型为 'GtkWindow' 的实例 '0x7efd843c2720' 无效
  • 不幸的是,我在 Windows 上没有收到该警告。据我所知,这是本机代码的问题。
  • 我也可以在 Mac 上运行它,没有警告。看起来像是 Gtk 的 Linux 问题。你能用-Djdk.gtk.version=2在Gtk 2上试试吗?

标签: javafx scenebuilder javafx-11


【解决方案1】:

对于在 Linux 上以 HiDPI 配置运行 SceneBuilder 的问题,我一直在寻找答案,而这个线程起初似乎无害且与 HiDPI 问题无关 - 但它通过一些响应提供了答案 -如果可以的话,我会总结一下:

把它们放在一起;适用于 GTK 上的 Ubuntu 20

cd /opt/SceneBuilder
java --module-path /opt/javafx-sdk-11.0.2/lib \
  --add-modules=javafx.controls,javafx.fxml,javafx.web,javafx.swing \
  --add-opens javafx.fxml/javafx.fxml=ALL-UNNAMED \
  -Dglass.gtk.uiScale=2.0 -Djdk.gtk.version=2 \
  -jar app/scenebuilder-11.0.0-all.jar

我也不得不

sudo apt install libcanberra-gtk-module libcanberra-gtk3-module

在启动 SceneBuilder 时消除相关的错误警告。

根据您的安装更改以下路径:

  • 注意 JavaFX SDK 的安装位置(在 --module-path 中指定)
  • 注意 SceneBuilder 的位置
  • 注意 uiScale 比例因子。对此进行调整以使 SceneBuilder 可用。
  • 不添加 gtk.version;产生了一个工作用户界面;但鼠标拖放时出现非常奇怪的错误。

非常感谢所有贡献者 - HiDPI 问题确实让我感到困扰,而其他线程都指出它正在修复并且“正常工作”。希望这对某人有所帮助。

【讨论】:

    猜你喜欢
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 2019-02-19
    • 2014-10-30
    相关资源
    最近更新 更多