Javafx无法在Debian8 Arm Device NanoPC T3上运行

时间:2017-09-26 08:19:16

标签: java linux javafx arm debian

我的目标

我想在Linux Arm设备上运行javafx,但失败了!

NanoPC T3,有一些信息:

fa@NanoPi3:~$ uname -a
Linux NanoPi3 3.4.39-s5p6818 #3 SMP PREEMPT Mon Jun 19 18:28:53 HKT 2017 armv7l GNU/Linux

fa@NanoPi3:~$ cat /etc/issue
Debian GNU/Linux 8 \n \l

fa@NanoPi3:~$ getconf LONG_BIT
32

Display: 7 in Capacitive screen (X710)

我做过:

  1. 下载jdk-8u144-linux-arm32-vfp-hflt.tar.gz
  2. 下载JavaFX Embedded SDK
  3. 根据javafxports
  4. 复制文件
  5. 编写示例应用和包,在我的NanoPC T3上运行:

    public class Main extends Application {
        @Override
        public void start(Stage primaryStage) {
            try {
                StackPane root = new StackPane();
    
                Button btn = new Button();
                btn.setText("Say 'Hello World'");
                btn.setOnAction(new EventHandler<ActionEvent>() {
                    @Override
                    public void handle(ActionEvent event) {
                        System.out.println("Hello World!");
                    }
                });
                root.getChildren().add(btn);
    
                Scene scene = new Scene(root,400,400);
                scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
    
                primaryStage.setScene(scene);
                primaryStage.setTitle("Hello ARM");
                primaryStage.show();
            } catch(Exception e) {
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
            launch(args);
        }
    }
    
  6. 我的问题

    当我通过cammond运行应用程序时:java -jar HelloArm.jar,系统UI无法响应。 但是,我正常使用ssh登录设备,也可以看到线程java程序:

    ps -aux | grep java.
    

    当我杀了它时,System UI再次正确。我测试为java添加一些标志(tips from here):

    -Dmonocle.platform=Monocle -Djavafx.debug=true -Dprism.order=sw
    

    有些想法

    1. 我测试Java swing,没关系
    2. 我发现Javafx在linux上使用单片机。我不知道,X11对javafx来说是不合理的?或者,我必须为X11安装一些东西?

1 个答案:

答案 0 :(得分:3)

最后,我们发现我们需要添加-Djavafx.platform = eglfb,让JavaFX使用eglfb来管理用户界面。

祝你好运。

感谢。