falsche ELF-Klasse: ELFCLASS32
Ich bin immer diese Fehlermeldung zeigt auf etwas .also die Datei die beim ausführen meiner Anwendung auf einem Solaris-Rechner. Jedoch, die Anwendung läuft einfach gut in meiner Windows-Maschine. Wenn ich mich nicht Irre, meine Bewerbung ist, dass die 64-bit-version, aber ich habe nur ein 32-bit-version des .also die Datei in der Solaris-Maschine. Gibt es eine Möglichkeit, kann ich dieses Problem beheben, so wird es mit dem 32-bit-version statt? Ich verstehen, es hat nichts zu tun mit der Bytecode aber wohl mit der JVM. Ich habe versucht mit mit -d32 oder -d64 aber es hat keine Wirkung.
UPDATE:
Dies ist die genaue Fehlermeldung:
Exception in thread "main" java.lang.UnsatisfiedLinkError: librvjs11.so: ld.so.1: java: fatal: librvjs11.so: wrong ELF class: ELFCLASS32<br>
at java.lang.ClassLoader$NativeLibrary.load(Native Method)<br>
at java.lang.ClassLoader.loadLibrary0(Unknown Source)<br>
at java.lang.ClassLoader.loadLibrary(Unknown Source)<br>
at java.lang.Runtime.loadLibrary0(Unknown Source)<br>
at java.lang.System.loadLibrary(Unknown Source)<br>
Habe ich bereits aktualisiert, LD_LIBRARY_PATH, damit das Verzeichnis mit der Datei oben.
- "Ich bin immer diese Fehlermeldung"... Welche Fehler Sie sprechen? Die Buchung der gemeldete Fehler wird den Menschen helfen, zu verstehen, was du meinst.
- jasonline bedeutet eine "falsche ELF-Klasse" - Fehler. Wenn Sie jemals eines gesehen, es trägt nicht viel Informationen-nur der Dateiname. Es ist in der Tat bedeuten, dass die app versucht, eine 32-bit Binär-in eine 64-bit-Umgebung.
- Ich weiß, was es entspricht. Das wichtigste ist jedoch, dass es gemeldet werden können im Zusammenhang mit einem UnsatisfiedLinkError. Also, ohne zu wissen das Fehler beteiligt, und die Dateien in Frage, es wird sehr schwierig sein, Hilfe bei der Fehlersuche. Ich würde vorschlagen den Inhalt der LD_LIBRARY_PATH, aber das wäre anmaßend.
- vielen Dank für die Klarstellung.
- du bist herzlich willkommen. Für jetzt, Ihre Antwort helfen könnte, die OP durchführen, grundlegende Maßnahmen zur Fehlerbehebung, aber es sei denn, es ist bekannt, was die Bibliothek nicht geladen werden konnte, ich fürchte, es gibt sehr wenig psychische Debuggen, was man tun kann.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Basierend auf das Gespräch in der anderen Antwort, es wurde daraus gefolgert werden, dass die JVM wurde eine 64-bit-Prozess. Dies bestätigte sich mit der
pflags
Befehl in Solaris.Offenbar die
-d32
flag übergeben, um die JVM wurde ignoriert. Dies war aufgrund der Möglichkeit, die JVM wird ein 64-bit-Version, die war unfähig in der 32-bit-Modus. Die Auflösung könnte sich daher die Installation einer 32-bit-version von JVM und der gleichen.Was ich denke passiert, ist, dass Ihre app über eine Bibliothek, die hat seine eigenen vor-kompilierten Binärdateien, und das sind 32 bit.
Ihre Optionen sind entweder eine 64 bit-version der Binärdateien, Kraft oder java laufen in 32 bit, was ist, was
-d32
tun soll.Allerdings kann die jvm auf dem Rechner laufen in 32 bit? Wenn es nicht kann, dann das
-d32
wird zu java spuckt eine Warnung, dass es nicht läuft im 32-bit-und, dass Sie auch in 64 bit.Sind Sie immer, die Warnung?
Ich bin ein CW seit Vineet ist all das zu helfen.
java -version -d32
Bericht, und wie unterschiedlich ist die Ausgabe vonjava -version -d64
?ps
ist nicht die Berichterstattung der Fahnen. Es ist ein weiterer test jedoch zu überprüfen, ob der Prozess ist ein 32-bit-oder eine 64-bit-Version. Verwendenpflags <pid>
wo pid ist, dass der JVM. Ein 32-bit-Prozess verwendet eine ILP32 Daten-Modell, während ein 64-bit verwendet ein LP64 ein. Dies ist genauer in Ihrem Fall, für Sie Berichte, die Daten aus den zugrunde liegenden Prozess. Sie benötigen, um sicherzustellen, dass die JVM nicht erzeugen von neuen Prozessen mitProcessBuilder
oder die zugehörigen Java-Klassen.