JavaFX Anwendung läuft in IntelliJ IDEA aber nicht aus JAR

Hallo Leute,

ich habe das im Titel angezeigt Problem, welches evtl. mit der JDK-Version 7u45 zusammenhängt. Unter einem früheren JDK ließ sich die Anwendung nämlich aus dem JAR starten.

Bei einem Doppelklick (unter Windows XP SP3) auf das JAR tut sich nichts und beim Start von der Kommandozeile mit “java -jar QuotesManager.JAR” wird folgende Fehlermeldung angezeigt:


F:\Daten\IdeaProjects\QuotesManager\JAR>java -jar QuotesManager.jar
Exception in thread "main" java.lang.RuntimeException: Application launch error
        at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:122)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.UnsatisfiedLinkError: com.sun.glass.ui.win.WinApplication._invokeLater(Ljava/lang/Runnable;)V
        at com.sun.glass.ui.win.WinApplication._invokeLater(Native Method)
        at com.sun.glass.ui.Application.invokeLater(Application.java:338)
        at com.sun.javafx.tk.quantum.QuantumToolkit.defer(QuantumToolkit.java:620)
        at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:173)
        at com.sun.javafx.application.PlatformImpl.runAndWait(PlatformImpl.java:212)
        at com.sun.javafx.application.PlatformImpl.tkExit(PlatformImpl.java:320)
        at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:421)
        at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47)
        at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115)
        ... 1 more

Das JAR-Archiv wurde mit Ant 1.8.2 erstellt, die IntelliJ-Version ist 13.0

Hat jemand eine Idee, woran das liegen könnte?

Ich habe die Problemlösung gefunden:

Es lag daran, dass die Datei “jfxrt.jar” die im Manifest angegeben ist, von einer älteren Java-Version stammte.
Das jedoch führt zu einer neuen Frage:

Warum ist es für eine JavaFX-Anwendung erforderlich die obige Datei per
“Class-Path: lib\jfxrt.jar”
im Manifest anzugeben? (lib ist ein Ordner im gleichen Verzeichnis wie das Anwendungs-JAR.)
Ohne diese Angabe läuft ein JavaFX Programm nicht.

Wenn man diese Datei zusammen mit der Anwendung ausliefert und die Anwendung später unter einer neuen Java-Version laufen soll, tritt ja vermutlich der gleiche oder ein ähnlicher Fehler wieder auf.

Gibt es eine Möglichkeit den Pfad zur “jfxrt.jar” aus der Java-Installation zu setzen (ohne das man weiß, wo das installiert ist)?

Frag das doch mal unseren “Profi” unregistriert hier. Vielleicht gibt er sich zu erkennen
http://forum.byte-welt.net/threads/11019-JavaFX-und-JRE-7u45