2017-09-26 4 views
0

Ma cible Je veux exécuter javafx sur un périphérique Linux Arm, mais j'ai échoué!Javafx ne peut pas être exécuté sur Debian8 Arm Device NanoPC T3

T3 NanoPC, il y a quelques informations:

[email protected]:~$ uname -a 

Linux NanoPi3 3.4.39-s5p6818 #3 SMP PREEMPT Mon Jun 19 18:28:53 HKT 2017 armv7l GNU/Linux 

[email protected]:~$ cat /etc/issue 

Debian GNU/Linux 8 \n \l 

[email protected]:~$ getconf LONG_BIT 

32 

Display: 7 in Capacitive screen (X710) 

je l'avais fait:

1, télécharger jdk-8u144-linux-arm32-VFP-hflt.tar.gz;

2, télécharger JavaFX Embedded SDK,

3, copiez les fichiers Acco javafxports;

4, écrivez un exemple d'application et de package, exécutez sur mon NanoPC T3;

 

    package application; 

    import javafx.application.Application; 
    import javafx.event.ActionEvent; 
    import javafx.event.EventHandler; 
    import javafx.scene.Scene; 
    import javafx.scene.control.Button; 
    import javafx.scene.layout.StackPane; 
    import javafx.stage.Stage; 


    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() { 

        @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); 
     } 
    } 

Mon problème

Quand je lance l'application par cammond: java -jar HelloArm.jar, l'interface utilisateur du système n'est pas responsable. Mais, je me connecte l'appareil en utilisant normalement ssh, peut également voir le programme thread java.

ps -aux | grep java. Là où je le tue, l'interface utilisateur du système se remet en place.

test j'ajouter un peu de drapeau pour java: -Dmonocle.platform = Monocle = true -Djavafx.debug -Dprism.order = sw (tips from here)

Une certaine idée

1, je tester Java swing, c'est OK;

2, j'ai trouvé que Javafx en utilisant monocle sur linux. Je ne sais pas, X11 est uncorret pour javafx? Ou, je dois être installé quelque chose pour X11?

Quelqu'un peut-il m'aider?

Merci!

+0

J'ai lancé JavaFX 8 avec succès sur un Quad UDOO (ARMv7). Ce n'était pas facile, le plus important est que JavaFX utilisera le fichier frambebuffer/dev/fb0. –

+0

Merci! M. le Rutte hier. J'ai trouvé que doit utiliser les options fb. – larntin

Répondre

2

Enfin, nous avons trouvé que nous devons ajouter -Djavafx.platform = eglfb, laissez le javafx parcourir l'interface utilisateur en utilisant eglfb.

Bonne chance.

Pense.