Meine Hardware:JavaFXPorts (Gluon) auf Raspberry Pi Installation und führen Sie ein einfaches JFX-Programm
- Raspberry Pi 1 B +
- Touch Display Watterott 320x240 FBTFT
- HifiBerry DAC+
Meine Software :
- Betriebssystem: Raspbian GNU/Linux 8 (jessie Lite) [Ohne X]
- Kernel: Linux 4.4.21+
- Architektur: Arm
- Touch Display und Hifiberry aktiviert mit Gerätebaum Overlay
- Java: jdk-8u121-linux-arm32-VFP-hflt
- JavaFXPorts (Gluon): 012.364.
Was ich bisher getan haben:
Zuerst heruntergeladen ich die aktuelle Version JDK (Java 8u121 für Linux ARM 32 Hard Float-ABI) von Oracel klick.
Ich packte alles /opt/
Als nächstes installierte ich die neue Java-Version ...
sudo update-alternatives --install "/usr/bin/java" "java" "/opt/jdk1.8.0_121/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/opt/jdk1.8.0_121/bin/javac" 1
sudo update-alternatives --set "java" "/opt/jdk1.8.0_121/bin/java"
sudo update-alternatives --set "javac" "/opt/jdk1.8.0_121/bin/javac"
Wenn ich jetzt eingeben java -version
[email protected]:/opt $ java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) Client VM (build 25.121-b13, mixed mode)
, das gut aussieht, so weit, doesn‘ t es?
Zweitens habe ich die aktuelle Version von JavaFXPorts (JavaFX Embedded SDK Version 8.60.8 Armv6 Hard Float) von Gluon klick heruntergeladen.
Ich kopierte die folgenden Dateien in das JDK-Verzeichnis (/opt/jdk1.8.0_121) wie unter here unter 2.1.4 beschrieben.
armv6hf-sdk/rt/lib/ext/jfxrt.jar ------------------------ jre/lib/ext/
[email protected]:/opt/jdk1.8.0_121/jre/lib/ext $ ls -l
insgesamt 17140
-rw-r--r-- 1 uucp 143 3860502 Dez 13 02:40 cldrdata.jar
-rw-r--r-- 1 uucp 143 8286 Dez 13 02:40 dnsns.jar
-rw-r--r-- 1 uucp 143 44516 Dez 13 02:40 jaccess.jar
-rw-r--r-- 1 uucp 143 9771185 Mär 14 19:52 jfxrt.jar
-rw-r--r-- 1 uucp 143 1179093 Dez 13 02:40 localedata.jar
-rw-r--r-- 1 uucp 143 746 Dez 13 02:40 meta-index
-rw-r--r-- 1 uucp 143 2022531 Dez 13 02:40 nashorn.jar
-rw-r--r-- 1 uucp 143 42154 Dez 13 02:40 sunec.jar
-rw-r--r-- 1 uucp 143 280161 Dez 13 02:40 sunjce_provider.jar
-rw-r--r-- 1 uucp 143 251327 Dez 13 02:40 sunpkcs11.jar
-rw-r--r-- 1 uucp 143 68924 Dez 13 02:40 zipfs.jar
armv6hf-sdk/rt/lib/arm/* ------------------------------- jre/lib/Arm/
[email protected]:/opt/jdk1.8.0_121/jre/lib/arm $ ls -l
insgesamt 54520
drwxr-xr-x 2 uucp 143 4096 Dez 13 02:43 client
drwxr-xr-x 2 uucp 143 4096 Dez 13 02:40 jli
-rwxr-xr-x 1 uucp 143 620 Dez 13 02:40 jvm.cfg
-rwxr-xr-x 1 uucp 143 12458 Dez 13 02:40 libattach.so
-rwxr-xr-x 1 uucp 143 28475 Dez 13 02:40 libawt_headless.so
-rwxr-xr-x 1 uucp 143 603570 Dez 13 02:40 libawt.so
-rwxr-xr-x 1 uucp 143 384820 Dez 13 02:40 libawt_xawt.so
-rwxr-xr-x 1 uucp 143 8419 Dez 13 02:40 libbci.so
-rwxr-xr-x 1 uucp 143 175043 Dez 13 02:40 libdcpr.so
-rwxr-xr-x 1 uucp 143 61200 Mär 14 19:54 libdecora_sse.so
-rwxr-xr-x 1 uucp 143 17694 Dez 13 02:40 libdt_socket.so
-rwxr-xr-x 1 uucp 143 427804 Dez 13 02:40 libfontmanager.so
-rwxr-xr-x 1 uucp 143 49825 Mär 14 19:54 libfxplugins.so
-rwxr-xr-x 1 uucp 143 31428 Mär 14 19:54 libglass_monocle.so
-rwxr-xr-x 1 uucp 143 15946 Mär 14 19:54 libglass_monocle_x11.so
-rwxr-xr-x 1 uucp 143 194284 Mär 14 19:54 libglass.so
-rwxr-xr-x 1 uucp 143 1676215 Mär 14 19:54 libgstreamer-lite.so
-rwxr-xr-x 1 uucp 143 159094 Dez 13 02:40 libhprof.so
-rwxr-xr-x 1 uucp 143 42623 Dez 13 02:40 libinstrument.so
-rwxr-xr-x 1 uucp 143 43882 Dez 13 02:40 libj2gss.so
-rwxr-xr-x 1 uucp 143 13521 Dez 13 02:40 libj2pcsc.so
-rwxr-xr-x 1 uucp 143 68103 Dez 13 02:40 libj2pkcs11.so
-rwxr-xr-x 1 uucp 143 6527 Dez 13 02:40 libjaas_unix.so
-rwxr-xr-x 1 uucp 143 20825 Dez 13 02:40 libjava_crw_demo.so
-rwxr-xr-x 1 uucp 143 23301 Mär 14 19:54 libjavafx_font_freetype.so
-rwxr-xr-x 1 uucp 143 20564 Mär 14 19:54 libjavafx_font_pango.so
-rwxr-xr-x 1 uucp 143 14950 Mär 14 19:54 libjavafx_font.so
-rwxr-xr-x 1 uucp 143 218702 Mär 14 19:54 libjavafx_iio.so
-rwxr-xr-x 1 uucp 143 190543 Dez 13 02:40 libjava.so
-rwxr-xr-x 1 uucp 143 5704 Dez 13 02:40 libjawt.so
-rwxr-xr-x 1 uucp 143 255277 Dez 13 02:40 libjdwp.so
-rwxr-xr-x 1 uucp 143 23126 Dez 13 02:40 libjfr.so
-rwxr-xr-x 1 uucp 143 207761 Mär 14 19:54 libjfxmedia.so
-rwxr-xr-x 1 uucp 143 47082651 Mär 14 19:54 libjfxwebkit.so
-rwxr-xr-x 1 uucp 143 231488 Dez 13 02:40 libjpeg.so
-rwxr-xr-x 1 uucp 143 10601 Dez 13 02:40 libjsdt.so
-rwxr-xr-x 1 uucp 143 9365 Dez 13 02:40 libjsig.so
-rwxr-xr-x 1 uucp 143 66283 Dez 13 02:40 libjsoundalsa.so
-rwxr-xr-x 1 uucp 143 5789 Dez 13 02:40 libjsound.so
-rwxr-xr-x 1 uucp 143 331773 Dez 13 02:40 libkcms.so
-rwxr-xr-x 1 uucp 143 328967 Dez 13 02:40 liblcms.so
-rwxr-xr-x 1 uucp 143 48263 Dez 13 02:40 libmanagement.so
-rwxr-xr-x 1 uucp 143 738200 Dez 13 02:40 libmlib_image.so
-rwxr-xr-x 1 uucp 143 101978 Dez 13 02:40 libnet.so
-rwxr-xr-x 1 uucp 143 79517 Dez 13 02:40 libnio.so
-rwxr-xr-x 1 uucp 143 11385 Dez 13 02:40 libnpt.so
-rwxr-xr-x 1 uucp 143 42591 Mär 14 19:54 libprism_common.so
-rwxr-xr-x 1 uucp 143 59647 Mär 14 19:54 libprism_es2_eglfb.so
-rwxr-xr-x 1 uucp 143 54157 Mär 14 19:54 libprism_es2_monocle.so
-rwxr-xr-x 1 uucp 143 56508 Mär 14 19:54 libprism_sw.so
-rwxr-xr-x 1 uucp 143 8840 Dez 13 02:40 libresource.so
-rwxr-xr-x 1 uucp 143 53534 Dez 13 02:40 libsaproc.so
-rwxr-xr-x 1 uucp 143 23669 Dez 13 02:40 libsctp.so
-rwxr-xr-x 1 uucp 143 380853 Dez 13 02:40 libsplashscreen.so
-rwxr-xr-x 1 uucp 143 238184 Dez 13 02:40 libsunec.so
-rwxr-xr-x 1 uucp 143 408161 Dez 13 02:40 libt2k.so
-rwxr-xr-x 1 uucp 143 165565 Dez 13 02:40 libunpack.so
-rwxr-xr-x 1 uucp 143 46976 Dez 13 02:40 libverify.so
-rwxr-xr-x 1 uucp 143 110763 Dez 13 02:40 libzip.so
drwxr-xr-x 2 uucp 143 4096 Dez 13 02:43 server
armv6hf-sdk/RT/lib/javafx.platform.properties ----- jre/lib/
armv6hf-sdk/RT/lib/javafx.properties ---- ------------ jre/lib/
armv6hf-sdk/rt/lib/jfxswt.jar -------------------------- jre/lib/
[email protected]:/opt/jdk1.8.0_121/jre/lib $ ls -l
insgesamt 72848
drwxr-xr-x 2 uucp 143 4096 Dez 13 02:40 applet
drwxr-xr-x 5 uucp 143 4096 Mär 14 19:54 arm
-rw-r--r-- 1 uucp 143 1378 Dez 13 02:40 calendars.properties
-rw-r--r-- 1 uucp 143 3135391 Dez 13 02:40 charsets.jar
-rw-r--r-- 1 uucp 143 84311 Dez 13 02:40 classlist
drwxr-xr-x 2 uucp 143 4096 Dez 13 02:40 cmm
-rw-r--r-- 1 uucp 143 5916 Dez 13 02:40 content-types.properties
-r--r--r-- 1 uucp 143 4122 Dez 13 02:40 currency.data
drwxr-xr-x 2 uucp 143 4096 Mär 14 19:52 ext
-rw-r--r-- 1 uucp 143 3901 Dez 13 02:40 flavormap.properties
-r--r--r-- 1 uucp 143 1678 Dez 13 02:40 fontconfig.bfc
-rw-r--r-- 1 uucp 143 1938 Dez 13 02:40 fontconfig.properties.src
-r--r--r-- 1 uucp 143 4532 Dez 13 02:40 fontconfig.RedHat.5.bfc
-rw-r--r-- 1 uucp 143 8841 Dez 13 02:40 fontconfig.RedHat.5.properties.src
-r--r--r-- 1 uucp 143 4250 Dez 13 02:40 fontconfig.RedHat.6.bfc
-rw-r--r-- 1 uucp 143 8735 Dez 13 02:40 fontconfig.RedHat.6.properties.src
-r--r--r-- 1 uucp 143 6702 Dez 13 02:40 fontconfig.SuSE.10.bfc
-rw-r--r-- 1 uucp 143 16772 Dez 13 02:40 fontconfig.SuSE.10.properties.src
-r--r--r-- 1 uucp 143 7032 Dez 13 02:40 fontconfig.SuSE.11.bfc
-rw-r--r-- 1 uucp 143 16781 Dez 13 02:40 fontconfig.SuSE.11.properties.src
-r--r--r-- 1 uucp 143 4668 Dez 13 02:40 fontconfig.Turbo.bfc
-rw-r--r-- 1 uucp 143 9192 Dez 13 02:40 fontconfig.Turbo.properties.src
drwxr-xr-x 2 uucp 143 4096 Dez 13 02:40 fonts
-rw-r--r-- 1 uucp 143 13962 Dez 13 02:40 hijrah-config-umalqura.properties
drwxr-xr-x 3 uucp 143 4096 Dez 13 02:40 images
-rw-r--r-- 1 uucp 143 992 Mär 14 19:58 javafx.platform.properties
-rw-r--r-- 1 uucp 143 55 Mär 14 19:58 javafx.properties
-rw-r--r-- 1 uucp 143 116446 Dez 13 02:40 jce.jar
-rwxr-xr-x 1 uucp 143 7978 Dez 13 02:40 jexec
drwxr-xr-x 2 uucp 143 4096 Dez 13 02:40 jfr
-rw-r--r-- 1 uucp 143 560581 Dez 13 02:40 jfr.jar
-rw-r--r-- 1 uucp 143 521 Mär 14 19:59 jfxswt.jar
-rw-r--r-- 1 uucp 143 647051 Dez 13 02:40 jsse.jar
-rw-r--r-- 1 uucp 143 4226 Dez 13 02:40 jvm.hprof.txt
-rw-r--r-- 1 uucp 143 2455 Dez 13 02:40 logging.properties
drwxr-xr-x 2 uucp 143 4096 Dez 13 02:40 management
-rw-r--r-- 1 uucp 143 381 Dez 13 02:40 management-agent.jar
-rw-r--r-- 1 uucp 143 2034 Dez 13 02:40 meta-index
-rw-r--r-- 1 uucp 143 4464 Dez 13 02:40 net.properties
drwxr-xr-x 2 uucp 143 4096 Dez 13 02:40 oblique-fonts
-rw-r--r-- 1 uucp 143 10393 Dez 13 02:40 psfontj2d.properties
-rw-r--r-- 1 uucp 143 2796 Dez 13 02:40 psfont.properties.ja
-rw-r--r-- 1 uucp 143 3505335 Dez 13 02:40 resources.jar
-rw-r--r-- 1 uucp 143 66152504 Dez 13 02:40 rt.jar
drwxr-xr-x 2 uucp 143 4096 Dez 13 02:40 security
-rw-r--r-- 1 uucp 143 1210 Dez 13 02:40 sound.properties
-rw-r--r-- 1 uucp 143 104311 Dez 13 02:40 tzdb.dat
Ich hoffe, dass ich auf alle kopierten Dateien hinzugefügt, die richtigen Zugriffsrechte und Gruppenmitgliedschaften?
Wie oben erwähnt, verwende ich Raspbian Lite, wo das Pango-Paket fehlt. Ich habe gelesen, dass ich das für OpenJFX klick brauche. Also installierte ich es mit
sudo apt-get install libpango-1.0-0:armhf libpangoft2-1.0-0:armhf
Als Programmierumgebung ich auf meinem Heim-PC Netbeans 8.2 lief verwenden.
Zuerst machte ich ein normales "Hallo Welt" -Programm und das funktionierte sehr gut auf dem Raspberry Pi.
Dann wird ein sehr simpel JavaFX Programm baut in Netbeans auf meinem Heim-PC und überträgt auf das Raspberry Pi (zu dir:/home/pi/Netbeans)
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package javafxbasic;
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;
/**
*
* @author zimt
*/
public class JavaFXbasic extends Application {
@Override
public void start(Stage primaryStage) {
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!");
}
});
StackPane root = new StackPane();
root.getChildren().add(btn);
Scene scene = new Scene(root, 320, 240);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
Ausgeführt von meinem Heim-PC über SSH mit der Befehl sudo java -jar JavaFXbasic.jar
Und ich sehe immer diese Fehler auf dem Raspberry Pi ... (Hinweis:die .jar-Datei auf meinem Heim-PC arbeitet)
Exception in Application start method
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Caused by: java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$156(LauncherImpl.java:182)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ExceptionInInitializerError
at javafx.scene.Node.reapplyCss(Node.java:8983)
at javafx.scene.Node.impl_reapplyCSS(Node.java:8946)
at javafx.scene.Node.invalidatedScenes(Node.java:854)
at javafx.scene.Node.setScenes(Node.java:919)
at javafx.scene.Scene$9.invalidated(Scene.java:1119)
at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:111)
at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:146)
at javafx.scene.Scene.setRoot(Scene.java:1072)
at javafx.scene.Scene.<init>(Scene.java:347)
at javafx.scene.Scene.<init>(Scene.java:223)
at javafxbasic.JavaFXbasic.start(JavaFXbasic.java:37)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$163(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$176(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$174(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$175(PlatformImpl.java:294)
at com.sun.glass.ui.monocle.RunnableProcessor.runLoop(RunnableProcessor.java:92)
at com.sun.glass.ui.monocle.RunnableProcessor.run(RunnableProcessor.java:51)
... 1 more
Caused by: java.lang.NullPointerException
at com.sun.javafx.font.PrismFontLoader.loadFont(PrismFontLoader.java:196)
at javafx.scene.text.Font.<init>(Font.java:319)
at javafx.scene.text.Font.getDefault(Font.java:86)
at javafx.scene.CssStyleHelper.<clinit>(CssStyleHelper.java:1528)
... 19 more
Exception running application javafxbasic.JavaFXbasic
Ich verstehe nicht wirklich die Fehlermeldung von Java ... Ich glaube, ich habe etwas falsch gemacht oder etwas vergessen Installation von JavaFXPorts?
Woher weiß mein System, dass es jetzt OpenJFX gibt? Ich habe keinen Installationsbefehl oder ähnliches ausgeführt oder den Klassenpfad bearbeitet.
danke zum lesen
Vielen Dank. Das war das Problem. Ich habe jetzt keinen Java-Fehler. – DRK
Aber ich muss mein JavaFX-Programm mit -Dprism.order = sw starten. Wenn nicht, bleibt der Touch-Screen schwarz, aber das JavaFX-Programm läuft -> es wird kein Fehler ausgegeben. Ich dachte, Hardwarebeschleunigung wird auf dem Raspberry Pi unterstützt (https://wiki.openjdk.java.net/display/OpenJFX/OpenJFX+on+the+Himberry+Pi) – DRK