Darstellungsfehler und Ausnahmen unter Raspbian auf Raspberry Pi 4
-
@beta-tester ich hab noch nie einen Raspberry Pi aus der Nähe gesehen und von dem Teil 0 Ahnung. Außerdem bin ich ein großes Bisschen zu faul, um mich in QEMU einzuarbeiten und den RPi quasi auf meinem PC zu emulieren.:face_with_stuck-out_tongue_closed_eyes:
Daher meine Frage: Sehe ich das richtig, dass das Liberica JDK 11.0.6 für Linux ARM v7 & v8 32 bit HardFloat auf Der Gerät laufen würde?
Weil wenn ja,
dann wäre -mal im Fieberwahn ins Blaue phantasiert- :crazy_face::crazy_face: (m)ein Eclipse auf einem amd64 Windows 10,
- gesetzt den Fall, es wäre in der Lage, MV 13.6 für Win32 zu bauen…
…es wäre
- mit einem entsprechend gefütterten Maven Repository mit obigem OpenJDK+FX und
- einer halben Zeile Anpassung am MV Maven build-script
dann möglicherweise vielleicht eventuell in der Fieber-Theorie ebenfalls in der Lage quasi als…
…“Cross-Compiler” ist für Bytecode halt das falsche Wort… :face_with_hand_over_mouth:
ein MediathekView.jarzusammenzupacken mit enthaltenen 32 Bit JavaFX Bibliotheken :thumbs_up_light_skin_tone: für ARM v7 & v8 32 bit - und damit für RPi mit 32 Bit OS ???
Hätte ich so ein MediathekView.jar… für ARM 32 bit :flexed_biceps_light_skin_tone: , vorausgesetzt ich käme zunächst mit dem für mich testbaren Win32 Build durch :crazy_face:
:crazy_face: - dann könnte ich es halt mangels RPI bei ich nicht testen… - und es hätte nichts mit einem offiziellen MV release zu tun. – Ich wüsste nicht mal, wie ich Dir die -keine Ahnung- irgendwas in der Größenordnung von 70 MB oder so Datei zukommen lassen könnte.
Vorausgesetzt, Du wärst bereit auf Verdacht ein paar hundert MB runterzuladen die -und das kann bei Fieberwahn-Phantasien leicht sein!- nichts anderes sein könnten als ein Haufen Nullen und Einsen für die Tonne…Na, sa leis!
Bobby still!
wosch is?
-
@beta-tester so weit ich es verstanden habe, hast Du ein 32-Bit Betriebssystem auf Linux-Basis für die ARM v7 oder v8 Architektur. seit MV 13.3 bestehen MV Builds
- für Linux und Windows
- zum einen Teil aus plattformunabhängigen .class Dateien
- aber zum anderen Teil eben aus plattformabhängigen .so Dateien (Linux) bzw. .dll Dateien (Windows)
- Wie gesagt ist der offizielle MV 13.3+ Build für Linux für eine 64-bit Plattform.
Möglicherweise sind die von Dir gezeigten issues und Darstellungsprobleme auf Deinem 32-Bit Gerät hier ihren Ursprung haben. Ich kann Dir nicht sagen, ob die z.B. laut MV maven build script zum Erstellen der MV-Pakete von u.a. org.openfx genommene Archiv zusätzlich einen Konflikt zwischen x86-64 und der ARM Architektur haben.
Für mich klingt das ein bißchen so, als würde man in einen TDI eines Ingolstädter Autobauers einen Ottomotor eines in München ansässigen Motorenherstellers einbauen - muss ja passen, kommt ja beides aus Bayern… Hauptsache es dreht sich was.
Wie Du im obigen Link zu org.openjfx siehst, kriegt man dort nur plattformabhängige JavaFX Pakete. Für Linux und für Windows sind die jeweils nur für 1 Plattform gebaut, und zwar mit 64 Bit (amd64?) Solche fertigen 32-Bit Maven Pakete gibt’s -im Moment- nicht.
Was es inzwischen aber gibt -und ab hier verlassen wir den von den MV-Entwicklern supporteten Bereich!- sind einige OpenJDK, die JDK Installer etc. mit JavaFX für verschiedene Plattformen anbieten. Win32 (i586, i686) und Linux ARM v7&v8 32-Bit gehören inzwischen zum Angebot. So, mit diesen Installern, funktioniert der offizielle Build-Prozess der MV-Pakete aber nicht.
Ja, man kann sich spielen und es anpassen. Nein, dem MV-Entwickler ist nicht langweilig.
Nun habe ich mir in den letzten Tagen -eigentlich für Win32- mal angeschaut, was man machen muss, um MV 13.6 gegen JavaFX 11.0.6 aus diesen Installern von Zulu bzw. Liberica zu bauen. Der Build-Prozess ist erfolgreich und bei mir läuft der Win32 Build. Er ist aber bis auf 1x Durchklicken im Wesentlichen ungetestet.
Ich habe dann auch in meinem Eclipse unter Win64 mit dem Win32 javac von Liberica .class Files erzeugen lassen und das ganze mit den JavaFX Java Modulen (jmod) von Liberica für Linux-arm32 gepackt (also nicht Win32 .dlls sondern linux-arm32 .so in das MediathekView.jar reinschrauben lassen).
Ich kann mir vorstellen, dass für Deinen RPi dieser I-N-O-F-F-I-Z-I-E-L-L-E Build geeignet sein könnte. Daher lege ich es mal, falls Du magst, bis nächsten Freitag hierher. Vielleicht magst Du ja einen Test machen und probierst es einfach mal aus. Bitte rufe das .jar File mit dem Liberica JDK 11.0.6 für linux-arm32 auf.
Unter Win32
C:\OpenJDK\Liberica...\bin\java -Xmx1G --add-exports javafx.controls/com.sun.javafx.scene.control.inputmap=ALL-UNNAMED -jar MediathekView.jar
(der Export wird unter Win32 für den Slider im Filterdialog benötigt)
Der Unterschied zwischen meinem damaligen Vorgehen und dem aktuellen ist: das MV.jar wird nun von vornherein gegen die zur Laufzeit verwendeten Bibliotheken gebaut und mit diesen verpackt. Nicht mehr wie früher, mit irgendwas gebaut und mit irgendwas anderem betrieben.
Für linux-arm32 halt die große Unbekannte: genügt es, mit Windows gebaute .class mit den linux-arm32 Binaries zu verpacken. Keine Gewähr - aber wegen meinem Spieltrieb hab ich’s einfach mal versucht.
Danke an @DerReisende77 für wesentliche Tips, so weit zu kommen!
edit: update von 11.0.5 auf 11.0.6
-
hallo @rubikon verzeihung, dass ich mich jetzt erst wieder melde…
ich habe jetzt mal die bellsoft-jdk11.0.6+10-linux-arm32-vfp-hflt-full.deb installiert und deine MediathekView_linux-arm32_11.0.6.jar ausgeführt.
es kommen fast keine darstellungsfehler und fast keine ausnahmen mehr.der einzige darstellungsfehler ist die unlesbar kleine schriftgröße an vielen stellen:
$ dpkg --get-selections | grep java bellsoft-java11-full install
$ java --version openjdk 11.0.6 2020-01-15 LTS OpenJDK Runtime Environment (build 11.0.6+10-LTS) OpenJDK 32-Bit Server VM (build 11.0.6+10-LTS, mixed mode)
$ java -Xmx1G --add-exports javafx.controls/com.sun.javafx.scene.control.inputmap=ALL-UNNAMED -jar MediathekView_linux-arm32_11.0.6.jar . Portable Mode: false . Programmstart: 21.01.2020 07:03:18 . Version: 13.6.0 . === JavaVM Parameter === -Xmx1G --add-exports=javafx.controls/com.sun.javafx.scene.control.inputmap=ALL-UNNAMED . ======================== . Verzeichnis Einstellungen: /home/pi/.mediathek3 . Konfig wurde gelesen! WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by impl.org.controlsfx.ReflectionUtils (file:/home/pi/Downloads/MediathekView_linux-arm32_11.0.6.jar) to method com.sun.javafx.css.StyleManager.getInstance() WARNING: Please consider reporting this to the maintainers of impl.org.controlsfx.ReflectionUtils WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release (java:7486): Gtk-CRITICAL **: 07:03:29.319: IA__gtk_window_resize: assertion 'height > 0' failed . Liste Filme gelesen am: 21.01.2020, 07:03 . erstellt am: 20.01.2020, 21:59 . Anzahl Filme: 325433 . Die Filmliste ist 543 Minuten alt . MVHttpClient: Proxy not configured . . Alte Liste erstellt am: 20.01.2020, 21:59 . Anzahl Filme: 325433 . Anzahl Neue: 295 . Filmliste laden (Netzwerk) . Filme in Downloads eintragen . ------------------------------------------------------- . Einstellungen sichern . Einstellungen wurden heute schon gesichert . ------------------------------------------------------- . Daten Schreiben nach: /home/pi/.mediathek3/mediathek.xml . Config Schreiben nach: /home/pi/.mediathek3/mediathek.xml startet . Config Schreiben beendet . MediaDB schreiben (0) Dateien : . --> Start Schreiben nach: /home/pi/.mediathek3/mediadb.txt . --> geschrieben! . Liste Filme gelesen am: 21.01.2020, 07:04 . erstellt am: 20.01.2020, 23:59 . Anzahl Filme: 323548 . Liste Kompl. gelesen am: 21.01.2020, 07:04 . Liste Kompl erstellt am: 20.01.2020, 23:59 . Anzahl Filme: 323548 . . Jetzige Liste erstellt am: 20.01.2020, 23:59 . Anzahl Filme: 323548 . Anzahl Neue: 1670 . . Filme schreiben (323548 Filme) : . --> Start Schreiben nach: /home/pi/.mediathek3/filme.json . --> geschrieben! . Write duration: 10546 ms . Filme in Downloads eintragen . Daten Schreiben nach: /home/pi/.mediathek3/mediathek.xml . Config Schreiben nach: /home/pi/.mediathek3/mediathek.xml startet . Config Schreiben beendet . Daten Schreiben nach: /home/pi/.mediathek3/mediathek.xml . Config Schreiben nach: /home/pi/.mediathek3/mediathek.xml startet . Config Schreiben beendet Exception in thread "JavaFX Application Thread" java.lang.NullPointerException at mediathek.gui.bandwidth.BandwidthMonitorController$1.lambda$0(BandwidthMonitorController.java:80) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428) at java.base/java.security.AccessController.doPrivileged(Native Method) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427) at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96) at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method) at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(GtkApplication.java:277) at java.base/java.lang.Thread.run(Thread.java:834) . Daten Schreiben nach: /home/pi/.mediathek3/mediathek.xml . Config Schreiben nach: /home/pi/.mediathek3/mediathek.xml startet . Config Schreiben beendet . ################################################################################ . --> Beginn: 21.01.2020 07:03:18 . --> Fertig: 21.01.2020 07:11:28 . --> Dauer: 8.163 min . ################################################################################
ich habe mal die offizielle “normale” MediathekView jar ausprobiert und siehe da, die wirft gar keine ausnahme:
$ java -Xmx1G --add-exports javafx.controls/com.sun.javafx.scene.control.inputmap=ALL-UNNAMED -jar MediathekView.jar . Portable Mode: false . Programmstart: 21.01.2020 07:29:52 . Version: 13.5.1 . === JavaVM Parameter === -Xmx1G --add-exports=javafx.controls/com.sun.javafx.scene.control.inputmap=ALL-UNNAMED . ======================== . Verzeichnis Einstellungen: /home/pi/.mediathek3 . Konfig wurde gelesen! WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by impl.org.controlsfx.ReflectionUtils (file:/media/pi/99-USB/MediathekView/MediathekView.jar) to method com.sun.javafx.css.StyleManager.getInstance() WARNING: Please consider reporting this to the maintainers of impl.org.controlsfx.ReflectionUtils WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release (java:11603): Gtk-CRITICAL **: 07:30:02.959: IA__gtk_window_resize: assertion 'height > 0' failed . Liste Filme gelesen am: 21.01.2020, 07:30 . erstellt am: 20.01.2020, 23:59 . Anzahl Filme: 323548 . Die Filmliste ist 450 Minuten alt . MVHttpClient: Proxy not configured . Keine aktuellere Liste verfügbar . Filme in Downloads eintragen . ------------------------------------------------------- . Einstellungen sichern . Einstellungen wurden heute schon gesichert . ------------------------------------------------------- . Daten Schreiben nach: /home/pi/.mediathek3/mediathek.xml . Config Schreiben nach: /home/pi/.mediathek3/mediathek.xml startet . Config Schreiben beendet . MediaDB schreiben (0) Dateien : . --> Start Schreiben nach: /home/pi/.mediathek3/mediadb.txt . --> geschrieben! . Daten Schreiben nach: /home/pi/.mediathek3/mediathek.xml . Config Schreiben nach: /home/pi/.mediathek3/mediathek.xml startet . Config Schreiben beendet . ################################################################################ . --> Beginn: 21.01.2020 07:29:52 . --> Fertig: 21.01.2020 07:31:32 . --> Dauer: 1.668 min . ################################################################################
also wenn ich die schriftgröße irgendwie ändern könnte wär alles perfekt, und das ohne eine spezielle version für RaspbarryPi von MediathekView zu benutzen.
-
@beta-tester
GDK_SCALE=2 java -Xmx1G -Djdk.gtk.version=3 -jar…Libgtk3 muss dafür installiert sein und sollte die kleinen Komponenten lesbar hoch skalieren.
-
@DerReisende77
Danke für den tipp mit dem scale, aber das bläst nur die Gtk elemente auf das dopperlte auf, aber die schriften die vorher unlesbar klein gewesen waren, sind immer noch genauso winzig wie ohne dem scale…
EDIT: gibt es einen scale parameter nur für javaJFX ?
-
@DerReisende77
interessant, wenn ich meinen RPi4 auf eine auflösung von 4k (3840x2160 native auflösung des TV) einstelle, und dann MediathekView öffne, dann sind die kleinen schriften zwar immer noch klein, aber dafür gestochen scharf und leserlich…
jedoch auf die entfernung vom sessel aus ist diese auflösung nicht mehr lesbar.
komisch, dass diese schriften scheinbar optisch konstant groß bleiben.
sind diese schriften auf eine bestimmte mm-größe (MilliMeter) eingestellt, statt sich der übrigen skalierung unterzuordnen wie es GTK_SCALE für die anderen elemente tut?EDIT: wenn ich, während MediathekView noch ausgeführt wird, die auflösung (quasi unterm hintern weg) von 3849x2160 zurück auf 1920x1080 stelle, ist alles wie es ein sollte.
die winzigen schriften sind größer und immer noch scharf/gut lesbar
jedoch MV einmal schließen und dann neu öffnen und alles ist wieder unleserlich verschwommen klein
PS.: ich meine die schriften/elemente im filterdialog, dem filtereingabefeld, der unteren statusleiste, …
nicht die anderen schriften wie der filmliste!
ich schreibe das nur, damit nicht jemand meint, ich wäre schwer sehbehindert -
@beta-tester sagte in Darstellungsfehler und Ausnahmen unter Raspbian auf Raspberry Pi 4:
ich habe jetzt mal die bellsoft-jdk11.0.6+10-linux-arm32-vfp-hflt-full.deb installiert und deine MediathekView_linux-arm32_11.0.6.jar ausgeführt.
es kommen fast keine darstellungsfehler und fast keine ausnahmen mehr.Na, das sieht doch mal besser aus als die Screenshots im OP. Das oben zum Download verlinkte .jar hab ich aus der cloud genommen. Für mich ist dieses jar wie gesagt ein “Beiprodukt”, entstanden aus meinem Versuch, MV für Win32 zu bauen. - Das, was Dir geholfen hat war wohl dann eher Hinweis von @DerReisende77 auf ein JDK mit JavaFX für linux-arm32… keine Ahnung.
Ich habe für den inoffiziellen Build gegen Java 11.0.6 mit zugepacktem JavaFX gebaut (also JavaFX 11.0.6)
Die MV-Entwickler machen das anders, wie Du am pom.xml siehst (L73-L77). Dort wird mit JavaFX von org.openjfx v14-ea+6 gebaut. Und gerade vorhin hat @DerReisende77 betont, dass für den offiziellen Build aus gutem Grund 14-ea+6 verwendet wird, was -ich übersetZitiere hier- unter anderem mit fehlerhafter Darstellung von Dialogen in KDE zu tun habe.Analog gedacht, eine möglichst hohe JavaFX Version einzusetzen mit möglichst vielen Bugfixes, ist ggfs. Java 13.0.2 einen Schuss ins Blaue wert? Aber ob die auch für JavaFX 14 einen early access build für RPi anbieten, so wie damals für ea 13 4… kann ich nicht sagen.
Ich hatte vor einer Weile für @DerReisende77 auf meinen (amd64) Linux VMs getestet, ob der o.g. GDK_SCALE Vorteile bringt gegenüber dem in der Anleitung genannten Java VM-Parameter uiScale (muss für Linux ganzzahling sein!)… konnte aber keine Vorteile erkennen. Bei meinen Linux amd64 VMs skaliert beides, GDK_SCALE und uiScale die komplette GUI um z.B. 200%. Schrift, Buttons, Swing-Anteile, JavaFX-Anteile - alles. Aber halt mit dem offiziellen Linux-Build von MV.
Ob es auf dem RPi, einem Gerät, das ich nicht habe, jetzt besser ist, ein gefixtes JavaFX (14ea6) für die falsche Plattform (64-bit) einzusetzen oder ein “ungefixtes” JavaFX (11u5 bzw. 13u2) für die richtige Plattform(linux-arm32)… ich bin hier eher raus aus der Nummer/Thread, insbesondere in Bezug darauf, Beiträge mit wenigstens einem Hauch von Ahnung verfassen zu können. - Java hat mir grade heute Vormittag mal wieder -in einem völlig anderen Kontext als MV- eine deutliche Wasserstandsmeldung gegeben, welchen “Kenntnisstand” ich tatsächlich habe. Ich bin mal wieder bedient und lass jetzt lieber die Erwachsenen sprechen.
Danke für den Test des “cross-build” jar (Win32 javac -> linux-arm32 Paket) trotzdem!
-
@rubikon
ich habe jetzt mal die 13’er version ausprobiert - eine 14’er early access version konnte ich nicht für mein RPi finden.
das verhalten von MV ist aber damit das selbe.einen kurzen hoffnungsschimmer hatte ich bei der benutzung von parameter
-Dsun.java2d.uiScale=2.0.
damit hat sich ALLES um den faktor 2 vergrößert - auch die JavaFX sachen.
meine hoffnung war, mit -Dsun.java2d.uiScale=2.0 ALLES zu vergrößern und mit GDK_SCALE=0.5 nur die Gtk elemente wieder auf die ursprungsgröße runter zu skalieren… jedoch versteht GDK_SCALE leider nur ganzzahlige werte… -
ach ja, mir ist aufgefallen mit der “richtigen” java version (bellsoft-JDK statt openJDK) ist auch das problem mit dem abspielen der videos aus MV heraus beseitigt
(die videos stocken nicht mehr und bild und ton sind nicht mehr so extrem versetzt). -
@beta-tester was hat das mit der “richtigen” Javaversion zu tun? Hint: Das Abspielen erledigt doch eh ein externes Programm.
-
@mvsfsvm keine ahnung, ist nur so die feststellung, dass es nun viel geschmeidiger geht.
und in der zeit sind mir keine upgrades für VLC aufgefallen.
aber stimmt, da müsste ich jetzt die gegenprobe machen und zurück auf OpenJDK gehen und nocheinmal alles neu miteinander vergleichen. -
was ist das denn jetzt :astonished_face:
ich habe die /boot/config.txt datei versehendlich gelöscht und nun ist die anzeige von MediathekView einwandfrei. alles sieht so aus wie es aussehen soll - einfach perfekt.
(diese config.txt datei ist bei dem RPi für bestimte grundkonfigurationen zuständig. unter anderem auch für die HDMI einstellungen) für die desktopbildschirmeinstellungen ist ein anderes programm zuständig, das aber scheinbar einige einstellungen doch von der config.txt datei benutzt.sorry leute, da habe ich wohl irgendetwas in der config.txt datei gehabt, dass irgendwie die JavaFX scalierung aus dem tritt gebracht hat.
also die letzte hälfte dieses themas habe ich selber verbockt…
verzeihung… und danke für eure geduld und hilfe.kann ich das thema irgendwo als gelöst markieren?
-
nur noch als anmerkung/zusammenfassung:
auf meinem Raspberry Pi 4 B mit 4GByte läuft MediathekView 13.5.x jetzt einwandfrei.
ich habe die MediathekView-latest-linux.tar.gz heruntergeladen und entpackt.
mit den standard paketen openjdk-11-jre + openjfx über debian/raspbian gab es massive darstellungsfehler.
deshalb habe ich das java paket bellsoft-java13-runtime-full von BellSoft installiert, statt den standard paketen openjdk-11-jre + openjfx über debian/raspbian:wget -q -O - "https://download.bell-sw.com/pki/GPG-KEY-bellsoft" | sudo apt-key add - echo "deb [arch=armhf] https://apt.bell-sw.com/ stable main" | sudo tee "/etc/apt/sources.list.d/bellsoft.list" sudo apt update sudo apt install bellsoft-java13-runtime-full
als MediathekView.desktop habe ich folgenden inhalt
(endweder den <dateipfad> anpassen oder $PATH anpassen)[Desktop Entry] Encoding=UTF-8 Type=Application Name=MediathekView Icon=MediathekView.svg Exec=java -Xmx1G --illegal-access=warn --add-exports javafx.controls/com.sun.javafx.scene.control.inputmap=ALL-UNNAMED -jar MediathekView.jar StartupNotify=true
als warnung:
wenn in der /boot/config.txt datei die verwendung von EDID abgeschaltet wurde kann es stellenweise zu super kleinen schriften/elementen in MediathekView kommen, da der bildpunkte-pro-fläche-wert des bildschirms falsch angenommen wird, was wohl javafx elemente aus dem tritt bringt. -
PS.: auch die folgene raspi-config einstellung lässt die javafx schriften/elemente zu klein erscheinen:
“7 Advanced Options -> A8 GL Driver -> G2 GL (Fake KMS) OpenGL desktop driver with fake KMS” -
@mvsfsvm sagte in Darstellungsfehler und Ausnahmen unter Raspbian auf Raspberry Pi 4:
@beta-tester was hat das mit der “richtigen” Javaversion zu tun? Hint: Das Abspielen erledigt doch eh ein externes Programm.
ja, du hast recht…
es ist mir in letzter zeit wieder vorgekommen, dass es abspielprobeme beim live abspielen gab.
es sind netwerkpeobleme… sorry für meine falschannahme.