Javafx 如何使用Java 11启动Scenebuilder

Javafx 如何使用Java 11启动Scenebuilder,javafx,scenebuilder,javafx-11,Javafx,Scenebuilder,Javafx 11,在走向Java 11的路上,我正在检查我的工具包, 其中包括SceneBuilder 我将java-11与javafx-sdk-11和 使用启动SceneBuilder /opt/jdk-11/bin/java——模块路径javafx-sdk-11/lib——添加模块=javafx.controls、javafx.fxml、javafx.web、javafx.swing-jar scenebuilder-10.0.0-all.jar UI看起来正常,但任何创建场景的尝试都会出现一些错误:

在走向Java 11的路上,我正在检查我的工具包, 其中包括SceneBuilder

我将java-11与javafx-sdk-11和 使用启动SceneBuilder

/opt/jdk-11/bin/java——模块路径javafx-sdk-11/lib——添加模块=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
在Java11中使用Scenebuilder的最佳方式是什么


谢谢,Carsten

我到处寻找答案——关于在Linux上以HiDPI配置运行SceneBuilder的问题——这个线程起初似乎是无害的,与HiDPI问题无关——但它通过一些回答提供了答案——如果可以的话,我将总结:

把这一切放在一起;对于GTK上的Ubuntu20

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时出现的相关错误警告

根据安装更改以下路径:

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

非常感谢所有的贡献者——HiDPI问题真的让我很烦恼,而其他线程都指出它已经修复并且“正在工作”。希望这对某人有所帮助。

尝试添加
——将javafx.fxml/javafx.fxml=ALL-UNNAMED
添加到命令行。问题是Scene Builder正在尝试对
FXMLLoader
进行反射访问,但模块
javafx.fxml
不允许这样做(因为它不
将包打开到未命名的模块)。这会在Java9或Java10中导致警告,但Java11现在可能会默认拒绝访问。另一个选项可能是使用
--非法访问=许可
,但此选项被标记为在将来的版本中删除。如果还不存在错误报告,您可能需要提交错误报告。您好,Slaw,我尝试过,但现在在尝试拖放时遇到一些深层次的异常:(java:5768):GLib GObject WARNING**:gsignal.c:2451:信号“expose event”对于类型为“GtkWindow”的实例“0x7efd843c2720”无效。很遗憾,我在Windows上没有收到该警告。据我所知,这是本机代码的问题。我也可以在Mac上运行,没有警告。这似乎是Gtk的Linux问题。你能用GTK2用
-Djdk.Gtk.version=2
试试吗?