2016-07-21 65 views
0

我有一個Java應用程序試圖加載外部庫,但我不斷得到相同的異常。錯ELF類:ELFCLASS64

Caused by: java.lang.UnsatisfiedLinkError: /test/software/libraries/libraries/bin/libxejni.so: ld.so.1: java: fatal: /test/software/libraries/libraries/bin/libxejni.so: wrong ELF class: ELFCLASS64 (Possible cause: architecture word width mismatch) 
    at java.lang.ClassLoader$NativeLibrary.load(Native Method) ~[?:1.7.0_79] 
    at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965) ~[?:1.7.0_79] 
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890) ~[?:1.7.0_79] 
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1880) ~[?:1.7.0_79] 
    at java.lang.Runtime.loadLibrary0(Runtime.java:849) ~[?:1.7.0_79] 
    at java.lang.System.loadLibrary(System.java:1088) ~[?:1.7.0_79] 

這與32位JVM嘗試加載64位本機共享庫有關。但是我的Java版本是64位

Java版本 「1.7.0_79」 的Java(TM)SE運行時環境(建 1.7.0_79-B15)的HotSpot的Java(TM)64位服務器VM(建24.79- b02,混合模式)

該應用程序是使用maven構建的,任何人都有任何線索可以在這裏找到問題?

感謝

+1

您確定實際運行*的Java版本是64位版本嗎?只需從命令行運行'java -version'就不一定會顯示應用程序正在使用的JVM(例如,如果它是一個Web應用程序)。 –

+0

是的,它被部署在Java 1.7的solaris服務器上64位 – user3520080

回答

0

檢查libxejni.so應用程序需要加載的32位或64位,然後指定java -d32或32位或64位so,分別運行應用程序時java -d64選項。

+0

這不是在本地運行,它運行在服務器上,我不清楚如何指定它。只有java config我能找到的是JAVA_HOME設置。將「testenv/software/Java/jdk1.7.0_45/bin/java -d64」作爲我的JAVA_HOME嗎? – user3520080

+0

你的服務器是什麼?您需要檢查服務器配置。通常,在'JAVA_OPTIONS'中設置'-d64'的正確位置 – hflzh

+0

我們在這裏設置wrapper.java.additional.4 = -d64和JVM是64位,但仍然存在問題 – user3520080

相關問題