我目前正在评估Gluon,以将基于Swing的应用移植到移动android。 我以Gluon的hello-world为例(git clone https://github.com/gluonhq/hello-world.git) 我只是简单地介绍了SwingNode对象,以将Jcomponent传输到View构造函数中的View对象,如:
public BasicView() {
// Création de l'UI Swing sur le thead EDT de AWT/Swing.
final SwingNode swingNode = new SwingNode();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
initSwingUI(swingNode);
}
});
StackPane pane = new StackPane(swingNode);
pane.setAlignment(Pos.CENTER);
setCenter(pane);
}
public void initSwingUI(final SwingNode swingNode) {
JDesktopPane root = new JDesktopPane();
JGlobalGlgBean globalBean = new JGlobalGlgBean(root);
swingNode.setContent(root);
}
它在Gluon模拟器(./gradlew运行)中完美运行。 在Android移动设备(./gradlew androidInstall)中启动(程序停止)时崩溃。 我使用adb查看了Android移动设备调试日志文件,发现: 12-18 09:12:44.205 12402 12434 W System.err:由以下原因引起: java.lang.NoClassDefFoundError:无法解决以下问题:Ljavafx / embed / swing / SwingNode。 实际上,如果我只在代码中保留SwingNode创建(基本上不执行任何操作),它也会崩溃。日志只是表明android lib不知道SwingNode。 我正在使用带有gluon gradle 4.7(JVM:1.8.0_191)的android-sdk-linux(android-28)。 android和gluon之间似乎存在一些版本不兼容? 有没有人已经嵌入了适用于android或ios设备的SwingNode代码?谢谢。