2013-01-10 7 views
8

Ich habe eine JavaFX-Anwendung erstellt und ihr natives Bundle mit Ant erstellt. Wenn ich versuche, eine Anwendung mithilfe von Jar aus einem Bundle zu starten, das mit einem Doppelklick erstellt wurde, wird meine Anwendung erfolgreich gestartet. Aber wenn ich versuche, doppelklicken Sie auf MyApplication.exe (sagen wir), wirft es JavaFX Launcher Fehler "Ausnahme beim Ausführen der Anwendung".Fehler beim Starten der JavaFX-Anwendung mit der nativen Bundle-Exe

Ich habe beide jre verglichen, es gibt viele fehlende jar, exe, dll und einige Eigenschaften Dateien, die ich gefunden habe.

Ich habe diese Umgebungseinstellungen -

JAVA_HOME -- C:\Program Files\Java\jdk1.7.0_10 
JREFX_HOME -- C:\Program Files\Oracle\JavaFX 2.2 Runtime 
Path contains an entry of C:\Program Files\Java\jdk1.7.0_10\bin 

JAVA_HOME und JREFX_HOME wie in meinem build.xml verwendet Ameisen javafx.jar und jfxrt.jar aufzunehmen -

${env.JAVA_HOME}/lib/ant-javafx.jar 
${env.JREFX_HOME}/lib/jfxrt.jar 

Meine Schritte zum Erstellen von Bundle sind -

<target name="CreatingExe" depends="SignedJar"> 
      <fx:deploy width="800" height="600" nativeBundles="all" outdir="${OutputPath}" outfile="${app.name}"> 
       <fx:info title="${app.title}"/> 
        <fx:application name="${app.title}" mainClass="${main.class}"/> 
        <fx:resources> 
         <fx:fileset dir="${OutputPath}" includes="*.jar"/> 
       <fx:fileset dir="${WorkingFolder}/temp"/> 
      </fx:resources> 
     </fx:deploy> 
</target> 

Was mehr in build.xml benötigt, so dass die Anwendung ordnungsgemäß mit exe starten ?

Dank

+1

jdk7u10 enthält alle javafx-Laufzeit- und Entwicklungstools, daher sollten Sie javafx-Bits nicht außerhalb des jdk-Verzeichnisses verwenden oder verwenden - d. H. Nichts von 'C: \ Programme \ Oracle \ JavaFX 2.2 Runtime 'verwenden. – jewelsea

+0

@jewelsea wir haben unseren Pfad aktualisiert, um jfxrt.jar als - $ {env.JAVA_HOME} /jre/lib/jfxrt.jar zu übernehmen, nichts hat sich geändert !! Wie kann ich den kompletten JRE-Ordner beim Erstellen des Bundles in den Ordner "bundles \ MyApplication \ runtime \ jre" kopieren? –

+0

Es heißt "Nur eine Teilmenge von Java Runtime ist standardmäßig enthalten. Einige optionale und selten verwendete Dateien werden ausgeschlossen, um die Paketgröße zu reduzieren, wie alle ausführbaren Dateien. Wenn Sie etwas benötigen, das nicht standardmäßig enthalten ist, dann brauchen Sie um es als Nachbearbeitungsschritt zu kopieren. Für installierbare Pakete können Sie dies über das Konfigurations-Skript tun, das nach dem Füllen des eigenständigen Anwendungsordners ausgeführt wird. " Aber wie geht das? Ich habe keine Ahnung. –

Antwort

2

Das Problem der nicht JavaFx exe durch Kopieren jre aus "C: \ Programme \ Java \ jdk_version \ jre" aufgelöst starten zu \ Bündel \ MyApplication \ runtime \ jre in Erstellungsschritte bei der Erstellung exe as -

<target name="CopyJre" depends="CreatingExe"> 
<delete dir="${app_path}/bundles/MyApplication/runtime/jre"/> 
<mkdir dir="${app_path}/bundles/MyApplication/runtime/jre"/> 
<copy todir=${app_path}/bundles/MyApplication/runtime/jre"> 
    <fileset dir="${env.JAVA_HOME}/jre" /> 
</copy> 
</target> 

JAVA_HOME = C: \ Programme \ Java \ jdk_version

Dank

Verwandte Themen