Skip to content
  • Kategorien
  • Aktuell
  • Tags
  • Beliebt
  • Benutzer
  • Gruppen
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
MediathekView Logo

MediathekView-Forum

  1. Übersicht
  2. Fragen, Hilfe, Kritik
  3. Nightlies
  4. Nightlies auf ARM-Macs lauffähig machen (Portable Mode mit Startdatei)

Nightlies auf ARM-Macs lauffähig machen (Portable Mode mit Startdatei)

Geplant Angeheftet Gesperrt Verschoben Nightlies
8 Beiträge 2 Kommentatoren 595 Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • styrollS Offline
    styrollS Offline
    styroll
    schrieb am zuletzt editiert von styroll
    #1

    Ich hab mit der gleichen Methode wie bisher auf meinem Intel-Mac versucht, die aktuelle Nightly-Version auf meinem neuen M2-Mac zum Laufen zu bringen. Die Methode verwendet den Inhalt des ZIP-Files für Windows-User, wobei Mediathekview.jar mit meinem bisherigen Startskript, d.h. auch mit den den empfohlenen Startparametern und im Portable Mode gelauncht wird. Letzteres ist der Grund, dass ich nicht ein App-Bundle verwende, weil ich so die Kontrolle über den Speicherort der Programmeinstellungen habe.

    Auf dem M2-Mac resultieren nun 2 Fehler, wobei MV beim “Filme-Tab laden” hängen bleibt:

    MV-Nightly.png

    WARNING: package sun.awt.X11 not in java.desktop
    . Configuring baseFilePath /Users/user/bin/Einstellungen_MV/.mediathek3 for portable mode
    . Programmstart: 2023-08-09T00:48:01.289551
    . Version: 14.0.0
    . === Java Information ===
    . Vendor: Azul Systems, Inc.
    . VMname: OpenJDK 64-Bit Server VM
    . Version: 20.0.2
    . Runtime Version: 20.0.2+9
    . Maximum Memory: 12288 MB
    . Operating System: Mac OS X
    . OS Version: 13.5
    . OS Arch: aarch64
    . OS Dark Mode enabled: false
    . OS Available Processors: 8
    […]
    . Konfig wurde gelesen!
    . WARN: macOS app NOT launched from official launcher!
    Exception in thread "AWT-EventQueue-0" java.lang.IllegalAccessError: class org.controlsfx.control.textfield.AutoCompletionBinding (in unnamed module @0x69379752) cannot access class com.sun.javafx.event.EventHandlerManager (in module javafx.base) because module javafx.base does not export com.sun.javafx.event to unnamed module @0x69379752
    	at org.controlsfx.control.textfield.AutoCompletionBinding.<init>(AutoCompletionBinding.java:538)
    	at impl.org.controlsfx.autocompletion.AutoCompletionTextFieldBinding.<init>(AutoCompletionTextFieldBinding.java:107)
    	at impl.org.controlsfx.autocompletion.AutoCompletionTextFieldBinding.<init>(AutoCompletionTextFieldBinding.java:92)
    	at org.controlsfx.control.textfield.TextFields.bindAutoCompletion(TextFields.java:169)
    	at mediathek.javafx.filterpanel.FilmActionPanel.setupThemaComboBox(FilmActionPanel.java:283)
    	at mediathek.javafx.filterpanel.FilmActionPanel.setupViewSettingsPane(FilmActionPanel.java:271)
    	at mediathek.javafx.filterpanel.FilmActionPanel.<init>(FilmActionPanel.java:68)
    	at mediathek.gui.tabs.tab_film.GuiFilme.setupFilmActionPanel(GuiFilme.java:285)
    	at mediathek.gui.tabs.tab_film.GuiFilme.<init>(GuiFilme.java:152)
    	at mediathek.mainwindow.MediathekGui.createTabFilme(MediathekGui.java:673)
    	at mediathek.mainwindow.MediathekGui.initTabs(MediathekGui.java:688)
    	at mediathek.mainwindow.MediathekGui.<init>(MediathekGui.java:179)
    	at mediathek.mac.MediathekGuiMac.<init>(MediathekGuiMac.kt:22)
    	at mediathek.Main.getPlatformWindow(Main.java:646)
    	at mediathek.Main.startGuiMode(Main.java:626)
    	at mediathek.Main.lambda$main$7(Main.java:469)
    	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
    	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
    	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
    	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
    	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
    	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
    	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
    	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "mediathek.gui.tabs.tab_film.GuiFilme.getTableRowCount()" because "this.mediathekGui.tabFilme" is null
    	at mediathek.mainwindow.FilmSizeInfoLabel.updateValues(FilmSizeInfoLabel.java:38)
    	at mediathek.mainwindow.FilmSizeInfoLabel.actionPerformed(FilmSizeInfoLabel.java:69)
    	at java.desktop/javax.swing.Timer.fireActionPerformed(Timer.java:311)
    	at java.desktop/javax.swing.Timer$DoPostEvent.run(Timer.java:243)
    	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
    	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
    	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
    	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
    	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
    	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
    	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
    	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
    

    Ich hab zuerst wie bisher das AdoptJDK verwendet, einfach in der aktuellsten 20er-Version und neu für ARM-Macs (aarch64). Dann habe ich das Liberica-JDK (Full) verwendet, da etwas davon im Changelog zu MV 14 stand. Beides erfolglos. Nun sah ich den Log der Stable-Version an und sah, dass dort das Azul-JDK verwendet wurde, worauf ich es mit dem “Azul-JDK FX” versuchte. Analoge Fehlermeldung (vgl. oben).

    Wenn ich das ganze mit dem Jar-File in der “Mac-Version” der ZIP-Datei versuche (MediathekView-latest-nightly-mac.zip), wird nicht mal ein Spash-Screen geladen.

    @DerReisende77: Scheint irgendein JavaFX-basiertes Problem zu sein. Kannst du mir da weiterhelfen?

    D 1 Antwort Letzte Antwort
    • D Offline
      D Offline
      DerReisende77 Entwickler
      antwortete auf styroll am zuletzt editiert von DerReisende77
      #2

      @styroll versuche mal beim Start mit java folgende Parameter:

      -XX:+UseShenandoahGC
      -XX:ShenandoahGCHeuristics=compact
      -XX:MaxRAMPercentage=100.0
      -XX:+UseStringDeduplication
      -Dfile.encoding=UTF-8 
      --add-exports javafx.controls/com.sun.javafx.scene.control.inputmap=ALL-UNNAMED
      --add-exports javafx.base/com.sun.javafx.event=ALL-UNNAMED
      --add-exports javafx.controls/com.sun.javafx.scene.control.behavior=ALL-UNNAMED
      --add-exports javafx.graphics/com.sun.javafx.scene.traversal=ALL-UNNAMED`
      

      Damit sollten die illegal access errors beseitigt sein. Detaillierter kann ich leider nicht gucken da ich derzeit auswärts unterwegs bin.
      Liberica und Azul JDK sollten funktionieren, ein integriertes JavaFX “sollte” nicht notwendig sein. Adopt geht nicht da die nicht den Shenandoah GC verwenden.

      Open source developers do NOT have to:

      • Make your issue a priority, just because you say so.
      • Give you any sort of "timetable", or explanation for why it´s "taking too long".

      Check your entitlement. Nobody owes you anything.

      styrollS 2 Antworten Letzte Antwort
      • styrollS Offline
        styrollS Offline
        styroll
        antwortete auf DerReisende77 am zuletzt editiert von styroll
        #3

        @DerReisende77 sagte: versuche mal beim Start mit java folgende Parameter:
        -XX:+UseShenandoahGC
        -XX:ShenandoahGCHeuristics=compact
        -XX:MaxRAMPercentage=100.0
        -XX:+UseStringDeduplication
        -Dfile.encoding=UTF-8

        Diese Parameter hatte ich schon verwendet, einfach mit “MaxRAMPercentage=50.0”.

        Entscheidend ist nur dieser zusätzliche Parameter:
        --add-exports javafx.base/com.sun.javafx.event=ALL-UNNAMED
        quasi anstelle vom bisher gesetzten Parameter
        --add-opens java.desktop/sun.awt.X11=ALL-UNNAMED.
        Damit sind die zwei Exceptions weg. Hab dann “MaxRAMPercentage” wieder auf “50” gesetzt und die 3 anderen “add-exports”-Parameter gar nicht verwendet. Und das zuletzt installierte Azul-JDK (mit integriertem FX, was offenbar nicht nötig wäre) wurde weiterhin als Laufzeitumgebung verwendet.

        Besten Dank für die prompte Hilfe.

        PS:
        Es funktionieren nun beide Jar-File:

        MV_Portable_Jar-Versionen.png

        1. Sind im “kleineren” File aus dem ZIP für Mac-User einfach die Java-Klassen draussen, die es für macOS nicht braucht?
        2. Bzw. spielt es also unter macOS keine Rolle, welche Jar-Datei man verwendet?
        D 2 Antworten Letzte Antwort
        • D Offline
          D Offline
          DerReisende77 Entwickler
          antwortete auf styroll am zuletzt editiert von
          #4

          @styroll der —add-opens ist nur unter Linux notwendig, die —add-exports sind alle gds. notwendig wenn schon bei einem fehlenden gemeckert wird. Ansonsten kann es - je nach verwendetem control im Filter bsp. - passieren dass sich MV mit einer NullPointerException etc verabschiedet und Funktionen nicht ausgeführt werden. Ich würde sie alle drin lassen, sie fressen kein Brot.
          -XX:MaxRAMPercentage kann man je nach Ausstattung mit spielen, dank dem Shenandoah GC sind die Auswirkungen auf dein System aber recht gering da dieser belegten Speicher nun endlich auch freigeben kann. Also wie native Anwendungen. Die Zuweisung sollte so gewählt sein dass MV mindestens 4GB RAM (mehr ist besser) zum Spielen hat. Dieser wird auch nicht dauerhaft belegt.

          Open source developers do NOT have to:

          • Make your issue a priority, just because you say so.
          • Give you any sort of "timetable", or explanation for why it´s "taking too long".

          Check your entitlement. Nobody owes you anything.

          1 Antwort Letzte Antwort
          • D Offline
            D Offline
            DerReisende77 Entwickler
            antwortete auf styroll am zuletzt editiert von
            #5

            @styroll Wie gesagt ich kann gerade nicht nachsehen, aber in der Mac Version können diverse DLLs für Windows nicht drin sein. Ich würde dennoch immer die Jar für das jeweilige OS nehmen, kann ja sein dass ich zukünftig dort Sachen reinpacke die anderswo nicht benötigt werden.

            Open source developers do NOT have to:

            • Make your issue a priority, just because you say so.
            • Give you any sort of "timetable", or explanation for why it´s "taking too long".

            Check your entitlement. Nobody owes you anything.

            styrollS 1 Antwort Letzte Antwort
            • styrollS Offline
              styrollS Offline
              styroll
              antwortete auf DerReisende77 am zuletzt editiert von
              #6

              @DerReisende77: Besten Dank für die ausführliche Information!

              1 Antwort Letzte Antwort
              • styrollS Offline
                styrollS Offline
                styroll
                antwortete auf DerReisende77 am zuletzt editiert von styroll
                #7

                @DerReisende77 sagte: Liberica und Azul JDK sollten funktionieren, ein integriertes JavaFX “sollte” nicht notwendig sein.

                Nur zur Info: Ich hab eben die neueste Nightly installiert, die ja Java 21 benötigt, und hab wiederum das JDK von Azul installiert.
                Es funktioniert nur jenes JDK mit integriertem Java FX (“JDK FX”):

                3a81847c-951b-4672-b8b4-4cd39f6fad40-grafik.png

                Das Liberica JDK hab ich nicht getestet.

                styrollS 1 Antwort Letzte Antwort
                • styrollS Offline
                  styrollS Offline
                  styroll
                  antwortete auf styroll am zuletzt editiert von styroll
                  #8

                  Im Folgenden eine Anleitung, wie man die Nightlies von MV unter macOS nutzen kann:

                  1. Java installieren: Das JDK von Azul mit integriertem Java FX installieren.
                  2. MV Nightly downloaden.
                  3. Im Finder im Benutzer-Verzeichnis (also dort wo auch der Ordner “Dokumente” oder “Bilder” zu finden ist) im Ordner “Programme” einen Ordner “MediathekView_Nightly” erstellen. Wenn der Ordner “Programme” nicht existiert, diesen zuerst erstellen.
                  4. In den unter Schritt 3 erstellten Ordner die entpackte ZIP-Datei, also den Ordner “MediathekView-latest-nightly-mac” verschieben (rot markierter Ordner im folgenden Screenshot):

                  MV_Nighty-Directory.png

                  1. FFmpeg und FFprobe runterladen und die zwei entpackten Dateien (grün markierte Dateien im obigen Screenshot) in den zuerst zu erstellenden Ordner “bin” verschieben.

                  2. Mit dem Programm “TextEdit” eine Startdatei mit folgendem Inhalt kreieren (von hier kopieren!):

                  #!/bin/sh
                  
                  dir=`dirname "$0"`
                  cd "$dir"
                  JAVA_HOME="/Library/Java/JavaVirtualMachines/zulu-22.jdk/Contents/Home"
                  if [ -n "$JAVA_HOME" ]; then
                  	"$JAVA_HOME"/bin/java -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact -XX:MaxRAMPercentage=50.0 -XX:+UseStringDeduplication --add-exports javafx.base/com.sun.javafx.event=ALL-UNNAMED --add-exports javafx.controls/com.sun.javafx.scene.control.inputmap=ALL-UNNAMED --add-exports javafx.controls/com.sun.javafx.scene.control.behavior=ALL-UNNAMED --add-exports javafx.graphics/com.sun.javafx.scene.traversal=ALL-UNNAMED -Dfile.encoding=UTF-8 -jar ~/Applications/MediathekView_Nightly/MediathekView\-latest\-nightly\-mac/MediathekView\.jar ~/Applications/MediathekView_Nightly/Einstellungen/.mediathek3 $*
                  else
                  	java -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact -XX:MaxRAMPercentage=50.0 -XX:+UseStringDeduplication --add-exports javafx.base/com.sun.javafx.event=ALL-UNNAMED --add-exports javafx.controls/com.sun.javafx.scene.control.inputmap=ALL-UNNAMED --add-exports javafx.controls/com.sun.javafx.scene.control.behavior=ALL-UNNAMED --add-exports javafx.graphics/com.sun.javafx.scene.traversal=ALL-UNNAMED -Dfile.encoding=UTF-8 -jar ./MediathekView.jar ~/Applications/MediathekView_Nightly/Einstellungen/.mediathek3 $*
                  fi
                  cd $OLDPWD
                  
                  killall Terminal
                  
                  1. Die Datei über das Menü “Format” als “nur Text” formatieren und als UTF-8-kodierte Textdatei mit dem Namen MediathekView_Portable_Mac_Start.command (kopieren) abspeichern:

                  MV_Nightly_Startdatei_kreieren.png

                  1. Startdatei ausführbar machen: Das Programn “Terminal” öffnen und sudo chmod a+rx und einen Leerschlag tippen und dann die unter Schritt 7 erstellte Datei in das Terminal-Fenster hineinziehen, was dann etwa so aussehen sollte: sudo chmod a+rx ~/Applications/MediathekView_Nightly/MediathekView_Portable_Mac_Start.command Dann die Enter-Taste drücken und das Mac-Passwort eingeben.

                  2. Die nun ausführbar gemachte Startdatei “MediathekView_Portable_Mac_Start.command” (violett markierte Datei im Screenshot weiter oben) in den Ordner “MediathekView_Nightly” verschieben. Ein Doppelklick dieser Datei startet das Programm “MediathekView (Nightly Build)”.

                  Hinweise:

                  • Die Pfade und Dateinamen müssen exakt stimmen, sonst funktioniert die Startdatei – ohne entsprechende Anpassungen – nicht.
                  • Beim Ordner “Programme” handelt es sich nicht um das Verzeichnis, wo alle Programme wie Safari oder Mail zu finden sind, sondern dieser Ordner ist im gleichen Verzeichnis wie z.B. der Ordner “Dokumente” oder “Bilder”, eben das Benutzer-Verzeichnis oder Home-Directory mit dem “Haus-Symbol”.
                  • In den Ordner Einstellungen kann bei Bedarf der Ordner “.mediathek3” (mit allen MV-Einstellungen) aus einer bestehenden MV-Installation kopiert werden. Dieser unsichtbare Ordner befindet sich im Benutzerverzeichnis und kann mit dem Tastaturbefehl “Command+Shift+.” sichtbar gemacht und damit kopiert werden. Ein erneutes “Command+Shift+.” macht solche Dot-Dateien wieder unsichtbar.
                  • Wenn ein neues JDK installiert wird (z.B. JDK 23 statt JDK 22), muss der Pfad in der Startdatei entsprechend angepasst werden.
                  • Wenn eine neue Nightly installiert werden soll, muss jeweils nur die Datei “MediathekView.jar” ersetzt werden.
                  1 Antwort Letzte Antwort

                  38

                  Online

                  6.6k

                  Benutzer

                  6.1k

                  Themen

                  38.9k

                  Beiträge
                  undefined
                  • Anmelden

                  • Du hast noch kein Konto? Registrieren

                  • Anmelden oder registrieren, um zu suchen
                  • Erster Beitrag
                    Letzter Beitrag
                  0
                  • Kategorien
                  • Aktuell
                  • Tags
                  • Beliebt
                  • Benutzer
                  • Gruppen