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 SDK". 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.
- SDX: Was ist das für eine Bibliothek?
- Verwendest du ein Buildtool (Ant/Gradle/o.ä.)?
- Beinhaltet dein JAR-Kompilat (öffne es in einem ZIP-Extraktor wie 7-zip) eine Manifestdatei?
Sorry, hab mich verschreiben. es ist natürlich Java SDK (also für Klassen und Pakete). 2: Nein, ich verwende kein Buildtool. 3: Ja, wenn ich es entpacke ist eine Meta-INF vorhanden
1 Antwort
(...) ganz of die Fehlermeldung bekomme, dass es zu oft eine module-info gäbe (duplicate module-info).
Die weiteren module-info-Definitionen werden von JavaFX kommen. Beim Build hat Eclipse daraufhin das Problem, entscheiden zu müssen, welche Definition es nun verwendet. Wenn der Build dennoch abgeschlossen wird, wählt Eclipse sicherlich die erste module-info-Datei.
Wenn ich die exportierte Datei mit Java SDX öffnen will, dann passiert nichts.
Da ich nicht weiß, wie sich das bei dir konkret gestaltet: Eine JAR lässt sich über die Konsole (deines OS) starten:
java -jar fileNameOfYourJarApplication.jar
Voraussetzung ist eine (via Manifest) definierte Hauptklasse, die einen Einstiegspunkt beinhaltet. Wenn die Manifestdatei fehlt, sollte es auch so klappen:
java -cp fileNameOfYourJarApplication.jar fullPackageNameOfYourMainClass.NameOfYourMainClass
Wenn der Befehl java nicht gefunden werden kann, kannst du ihn ebenso gegen einen absoluten Pfad zur java.exe (im Ordner deines Java SDK) ersetzen:
"c:\...\java.exe" -jar fileNameOfYourJarApplication.jar
(...) Obwohl ich meine Hauptklasse beim exportieren aber definiert habe (...)
Die Mindestangaben in der Manifestdatei sollten diese sein:
Manifest-Version: 1.0
Main-Class: fullPackageNameOfYourMainClass.NameOfYourMainClass
Wenn die Hauptklasse dann dennoch nicht gefunden wird, wird wohl der Specifier (Package/Klassenname) nicht korrekt sein oder die angegebene Klasse ist keine valide Hauptklasse (entweder ist sie nicht öffentlich oder der Einstiegspunkt fehlt).
Nein, ich verwende kein Buildtool
Dazu würde ich dir raten, denn es vereinfacht die Angelegenheit. Nutze den Guide aus der Dokumentation: https://openjfx.io/openjfx-docs/#maven.