错误的ELF类:ELFCLASS32
在Solaris计算机上运行我的应用程序时,出现指向某些.so文件的错误。但是,该应用程序在Windows机器上运行得很好。如果我没记错的话,我的应用程序期望使用64位版本,但是Solaris机器中只有.so文件的32位版本。有没有一种方法可以解决此问题,因此它将改用32位版本?我了解它与字节码无关,但可能与JVM无关。我尝试使用-d32或-d64运行,但没有效果。
更新:
这是确切的错误:
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>
我已经更新了LD_LIBRARY_PATH,因此它包括包含上述文件的目录。
回答:
根据另一个答案中的对话,可以推断出JVM是一个64位进程。使用pflags
Solaris中的命令已确认了这一点。
我认为正在发生的事情是您的应用程序使用的库具有自己的预编译二进制文件,并且这些文件都是32位的。
您的选择要么是获取64位版本的二进制文件,要么是强制Java以32位版本运行,这-d32应该是这样做的。但是,该机器上的jvm可以32位运行吗?如果不能,-d32
它将导致Java发出警告,指出它不能在32位上运行,并且它将继续在64位上运行。您收到警告吗?
显然,-d32
传递给JVM
的标志被忽略了。这是由于JVM可能是64位操作系统而无法在32位模式下运行的缘故。因此,解决方法可能是安装32位版本的JVM,然后使用该版本。
以上是 错误的ELF类:ELFCLASS32 的全部内容, 来源链接: utcz.com/qa/421263.html