2016-07-21 8 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] 

これはappartantly 64ビットのネイティブの共有ライブラリをロードしようとしている32ビットのJVMを行うようになっています。しかし、私のJavaのバージョンは64ビット

Javaのバージョン "1.7.0_79" Javaの(TM)SEランタイム環境( 1.7.0_79-B15を構築する)は、Java HotSpot(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ビットsoためjava -d32またはjava -d64オプションを指定して、32ビットまたは64ビットです。

+0

これはローカルでは実行されていません。これはサーバー上で実行されていますが、これをどのように指定できるかは不明です。私が見つけることができるJavaの設定だけJAVA_HOMEの設定です。 "testenv/software/Java/jdk1.7.0_45/bin/java -d64"は私のJAVA_HOMEとして動作しますか? – user3520080

+0

あなたのサーバーは何ですか?サーバーの構成を確認する必要があります。通常、 '-d64'を設定する適切な場所は' JAVA_OPTIONS'です – hflzh

+0

ここではwrapper.java.additional.4 = -d64を設定し、JVMは64ビットですが、それでも問題が発生します – user3520080

関連する問題