我正在使用JNI通过我的java程序访问本机C文件。我已经创建了一个eclipse的共享对象,项目现在可以看到了。我现在遇到的问题是
线程“main”中的异常java.lang.UnsatisfiedLinkError:/opt/sw/libs/xda_core/.1.24.1-1/lib/lib_xda_core_java.so:/opt/sw/libs/xda_core/.1.24.1 -1 / lib / libxda_core_java.so: 错误的ELF类:ELFCLASS64(可能的原因:架构字宽度不匹配)
这是为64位架构制作的二进制文件。听起来JVM中存在不匹配等等。我检查了我的JVM,它是一个64位运行时。但是当我使用
时System.Property(“sun.arch.data.model”)它返回“32” 我认为eclipse是在32位JVM中运行的,这就是为什么我的JNI Native库无法正确链接,我收到了这个错误。
有什么建议吗?这是因为我有一个32位版本的eclipse吗?或者有没有办法可以强制eclipse使用已安装的64位JVM。
编辑:我已经尝试了所有人的建议,但没有任何工作。我已经将执行和环境变量更改为指向我最新的JDK,即1.6_30。当我从命令行运行程序时,我得到64和amd64作为值,当我在eclise中运行相同的程序时,我得到32和i386。 eclipse中出现问题导致它尝试在32位JVM上运行它。当我尝试java -d32 -version时,它说没有安装32位环境,但Eclipse不知道。我已经修改了Eclipse.ini文件但仍然无法正常工作。在这些变化之后我重新启动了eclipse ......没有。一个知道日食的人可以帮助我。感谢
答案 0 :(得分:1)
重新配置Eclipse以使用64位JVM启动程序,因为您已构建了64位JNI共享库。