Kann nicht laden Sie die 64-bit SWT libraries on 32-bit-JVM (auch wenn ich die heruntergeladenen 32-bit SWT)
Ich bin derzeit an der Entwicklung auf einem 64-bit-Windows-7-Maschine. Ich habe JRE7 64-bit-und JRE7 32-bit auf meinem Rechner installiert. Ich bin mit Eclipse 64-bit-version und konfiguriert Window - Preferences - Java - Installed JREs verwenden JRE7 32-bit-mein Standard-JRE zum testen gegen. Auch installiert die 32-bit-JDK und derzeit mit, dass zum testen gegen.
Ich doppelt überprüft und sicher gestellt, dass in der Tat bin ich mit SWT 32-bit Windows aber noch beim kompilieren wirft er mir "kann Nicht geladen 64-bit SWT libraries on 32-bit-JVM" Fehler.
Den Fehler zeigt deutlich, dass die Eclipse ist in der Tat mit JDK7-32 Bit, aber für einige Grund die SWT-Bibliotheken (http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops4/R-4.3-201306052000/swt-4.3-win32-win32-x86.zip) ist nicht vollständig 32-bit-o.O...
Irgendwelche Ideen? Irgendwelche workarounds?
FYI, schalten Sie das JRE auf 64-bit kompiliert das Programm Prima, aber ich möchte, dass meine Anwendung funktioniert auf beiden 32-bit und 64-bit.
Hier ist die volle Ausnahme:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Cannot load 64-bit SWT libraries on 32-bit JVM
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:260)
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:240)
at org.eclipse.swt.internal.C.<clinit>(C.java:21)
at org.eclipse.swt.widgets.Widget.<clinit>(Widget.java:107)
at Test.Application.<init>(Application.java:19)a
at Test.Application.main(Application.java:29)
Du musst angemeldet sein, um einen Kommentar abzugeben.
SWT verwendet plugin-Fragmente, um diesen zu kontrollieren - es ist ein 32-bit-fragment und ein 64-bit-fragment (sowie Fragmente für Mac, Linux, etc). Stellen Sie sicher, dass Ihre Startkonfiguration festgelegt, um das richtige fragment je nachdem, welche JVM laufen Sie, auf.
Als Hinweis, nur darunter "beide" plugin-Fragmente wird nicht funktionieren, denn dann werden Sie beide versuchen, es zu laden und zu Problemen führen.
Auch, diese stellt sich die Frage, die nützlich sein können.
Andere Idee wäre, Tauchen Sie ein in die
loadLibrary
- Funktion - von dem, was ich erinnere mich, wie das funktioniert, sieht es für eine zwischengespeicherte version der SWT-dll in einem temp-Ort irgendwo, und so könnte es mit einem Cache 64-bit-dll anstatt richtig Auspacken der 32-bit-Version aus dem Glas. In diesem Fall, das löschen des Cache kann man das Problem beheben.Die einfachste Lösung, obwohl, kann nur zu zwei separate Instanzen von Eclipse: ein setup zum ausführen von 32-bit, einer Einrichtung zur Ausführung von 64-bit. Auf diese Weise müssen Sie nicht sorgen zu machen über immer hin und her, oder futz um mit Konfigurationen wie viel.
loadLibrary
- Funktion - von dem, was ich erinnere mich, wie das funktioniert, sieht es für eine zwischengespeicherte version der SWT-dll in einem temp-Ort irgendwo, und so könnte es mit einem Cache 64-bit-dll anstatt richtig Auspacken der 32-bit-Version aus dem Glas. In diesem Fall, das löschen des Cache kann man das Problem beheben."Ich bin mit Eclipse 64-bit-version und konfiguriert Window - Preferences - Java - Installed JREs verwenden JRE7 32-bit-mein Standard-JRE, um gegen die Tests."
wie über die Konfiguration Ihrer eclipse zu werden und dann zu einer ausgewachsenen 32-bit-jdk anstelle der jre für das Projekt?
In Ihrem Eclipse-klicken Sie auf
Ausführen -> External Tools -> External Tools Configurations...
In JRE-Registerkarte, Wählen Sie die option
Läuft in derselben JRE wie Arbeitsbereich.
Diese behoben das Problem für mich.