Java FX exportiertes Projekt startet nicht

Horst21

Neues Mitglied

Java Fx Eclipse Projekt exportieren funktioniert nicht?​

Hallo, ich habe ein Programm in Eclipse geschrieben. Extern geholt habe ich mir dafür die Bibliotheken "Java FX" und "Java SDX". Das problem ist, dass ich schon beim Exportieren als "runnable JAR-file" ganz of die Fehlermeldung bekomme, dass es zu oft eine module-info gäbe (duplicate module-info). Allerdings wird die module info von mir nur einmal definiert. Laut diversen Videos ist der fehler aber anscheinend egal. Sie können die Datei nach dem Exportieren trotzdem öffnen. Wenn ich die exportierte Datei mit Java SDX öffnen will, dann passiert nichts. Kurz kommt der ladekreis über dem Mauszeiger und dann ist's vorbei. Über CMD habe ich nachgesehen was das Problem sein könnte. Anscheinend kann die Hauptklasse nicht gefunden werden. (Obwohl ich meine Hauptklasse beim exportieren aber definiert habe). Dann habe ich versucht eine Systemvarbiable im Path hunzuzufügen. Hat auch nichts gebracht. Die Versionen stimmen überein. Sowohl die Java SDX mit FX als auch Excplise. Ein Kollege wollte auch schon mit seinem entwickler tool meines exportieren (er verwendet Marven). Hat auch bei ihm nicht funktionniert. Ich hab auch schon in meinen Projekt Properties die Run-Depug einstellungen gelöscht, meine eigene erstellt und auch VM-Argumente eingefügt (--module-path /path/to/JavaFX/lib --add-modules=javafx.controls , javafx.fxml, javafx.graphics). Nichts hat funktioniert, ich weiß wirklich nicht mehr weiter. Mein ganzes Programm ist im Anhang. (falls es jemand von euch hinbekommt es zu exportieren).
 

Anhänge

Ich habe das Problem, dass ich das mit dem Eclipse Export nicht wirklich nachvollziehen kann und will.

Wenn Du ein jar bei dem export erstellst und das jar nicht per java -jar <jarDatei> gestartet werden kann, dann fehlt das Manifest oder das Manifest ist falsch. Das kannst Du auf den Konsole feststellen, denn die Fehlermeldung dürfte unterschiedlich sein.

Wie beheben? Du kannst da gerne weiter herum spielen in der IDE, aber das ist aus meiner Sicht nicht Zielführend. Ich würde ganz eindringlich dazu raten, dass Du auf ein Build System wie Maven umsteigst.

a) Du hast diesen ganzen Setup Mist nicht mit JavaFX SDK installieren und lauter Modul-Pfade setzen und all sowas.
b) Du hast ein Projekt-File, das alles enthält. Dieses kannst Du weiter geben also z.B. hier im Forum posten um Hilfe zu enthalten.
c) Du bist unabhängig von einer Entwicklungsumgebung. Du kannst also mit beliebigen ENtwicklungsumgebungen oder auf der Kommandozeile Entwickeln / das Projekt bauen.

Statt einem jar Datei sollte aus meiner Sicht das Ergebnis auch ein application Image sein, welches per JPackage gebaut wurde. Das ist dann etwas, das Du weiter geben kannst ohne irgendwelche Probleme (oder deutlich weniger), da das wirklich alles enthält - incl. einer Java Runtime.

Wenn Du das machen willst: Erzeuge ein neues Projekt. Verwende bitte nicht die Möglichkeit von Eclipse, für dein bestehendes Projekt ein Maven Projekt zu erzeugen. Bei Maven gilt Conventions over Configuration: es gibt also gewisse Konventionen, an die man sich halten sollte um dann weniger konfigurieren zu müssen. Und das sollte man nicht mit Füßen treten (So sind z.B. die Sourcen aufgeteilt in src/main/java src/main/resources und so - und da fängt es schon an, denn Eclipse schmeißt alles in src.)

Wie so ein Projekt aussehen könnte, zeige ich in https://github.com/kneitzel/JavaFXMavenApp (Für ein aktuelles Java, Also Java 21 wäre empfohlen, Java 17 würde auch gehen.)

Ich weiss nicht, ob ich es im Anschluss schaffe, mir Dein ZIP anzusehen. Falls es mein Rücken zulässt, baue ich Dir da mal ein Maven Projekt, mit dem Du dann etwas spielen kannst als Einstieg.
 
Ich habe mal auf die Schnelle etwas gebaut.

  • Ich habe das verlinkte Template als Basis genommen.
  • mysql-connector-j 8.1.0 wird von Dir verwendet - da gibt es Sicherheitslücken (https://mvnrepository.com/artifact/com.mysql/mysql-connector-j/8.1.0) - daher habe ich die letzte 8er Version genommen (8.4.0) aber Du solltest prüfen, ob die 9er Versionen nicht auch gehen würden ...
  • Ich arbeite ohne Module - wenn Du Abhängigkeiten ohne Modul-Informationen hast und dann JLink oder so nutzen willst, dann wirst Du merken, wieso das so ist 🙂
  • Ich habe es nicht bereinigt - du hast da also auch noch die documentation und auch meinen Code.
  • Auf Grund einer Eigenart von JavaFX habe ich dann mal die Main Klasse umbenannt (MavenApplication) und Du hast eine neue Main, die nur die main Methode der anderen Klasse startet. (In gewissen Szenarios gibt es Probleme, wenn die erste Klasse, die geladen wird, auch JavaFX Elemente mit lädt.)

Du kannst Dir das schnell erstellte Projekt unter https://home.neitzel.de/MavenApp.zip anschauen. Auf Anhieb habe ich bezüglich Datenschutz und so nichts kritisches gesehen - aber die Frage möchte ich doch stellen: Soll ich die Posts editieren und auch das Maven Projekt direkt wieder offline nehmen, so dass die ZIP Dateien nichte mehr verfügbar sind?
 
Nur als Vorschlag: man verwendet (zusätzlich) IntelliJ (mit passendem JDK/JRE, aktiviertem JavaFX) zum Anlegen und (Re-)Implementieren (unter Beachtung von #3 ) des Projekts. Nach erfolgreichem Kompilieren und Ausführen dann "File"-"Export"-"Project to Eclipse"
 

Zurück
Oben