2013-05-15 17 views
5


Normalerweise stelle ich meine Java-Apps als Bundle bereit, das die JVM enthält. Daher muss keine JVM auf dem System installiert werden.
Btw: Dies ist kein jnlp-Applet, das ist eine normale Swing-Anwendung.
Ich tat dies mit Ameisen fx:deploy. Dies funktioniert bereits für 64-Bit-Systeme. Mein Problem ist, dass ich diese Anwendung auf einem 32-Bit-System bereitstellen möchte und es nicht zum Laufen bringen.JavaFX EXE-Bundle für x86-Windows-Systeme

Folgendes habe ich gemacht:
Ich habe eine saubere Windows 7 (32bit) -Instanz eingerichtet und eine 32bit JVM installiert. Jetzt habe ich mein Ameisen-Skript ausgeführt, um eine gebündelte Java-App zu erstellen, und es wurde eine App.exe erstellt.
Aber wenn ich diese exe mit einem Doppelklick zu starten versucht, erhalte ich die folgende Meldung Feld
Failed to create JVM
Wenn ich auf OK klicken, ich ein anderes Meldungsfeld
Failed to launch JVM
Danach erhalten die App beendet wird.
Ich habe nichts gefunden, das das Netz bezüglich der Bündelung für 32/64 Bit-Systeme durchsucht.
So wäre ich sehr froh, wenn mir jemand in die richtige Richtung zeigen könnte.
Vielen Dank im Voraus!
Grüße, -chris-

Antwort

4

Sieht aus wie ein Fehler behoben bekannt für eine bevorstehende JavaFX-Version (als 2.2.40 derzeit bekannt):

Auf der Fehlerfall, der Benutzer erwähnt eine Umgehung:

Wenn ich versuche, die in RT-22610 beschriebene Problemumgehung zu umgehen, nämlich die Runtime \ jre \ bin \ msvcr100.dll-Seite in die Launcher-Binärdatei meiner Anwendung zu kopieren, wird sie behoben.

Ich denke, der Fehler in JDK 8 fixiert ist, so ein weitere mögliche Behelfslösung ist ein JDK 8 early access release zum Download und die Paketierungsprogramme von dort verwenden, um eine Java-7-Anwendung zu verpacken (obwohl ich nie versucht habe, und bin nicht sicher, ob es funktionieren würde).

+0

Danke für Ihre Antwort, aber das funktioniert immer noch nicht für mich. Die exe, die von jdk8 erstellt wird, tut nichts, wenn sie gestartet wird. Nicht einmal eine Fehlermeldung. – Chris

+0

Die Workaround funktioniert hier, auf 32 Bit Win XP in einer VirtualBox mit einem nativen Bundle inklusive Java 7 jvm (upadate 45, glaube ich). –

+0

Die verbleibende Frage ist: Wie können wir den Installer dazu bringen, die DLL automatisch an die richtige Stelle zu setzen? –

2

Nur eine kleine Änderung an @ jewelsea der Fix:

Kopieren msvcr100.dll in die app/Ordner, anstatt es direkt neben dem exe Putten funktioniert auch, und es ist zumindest etwas versteckt dann weg.

0

Wenn Sie ein MSI generieren, können Sie die von WIX verwendete WXS-Datei hacken, um msvcr100.dll automatisch in den App-Ordner zu kopieren. Wenn Sie "Ausführlich bereitstellen" angeben, wird Ihnen mitgeteilt, wo die temporäre WXS-Datei gespeichert wird, die Sie kopieren und ändern können. Sie können damit WXS überschreiben, wie Sie es zum Beispiel beim Programmsymbol tun würden.