首先,对于你们所有人来说,这可能是一个非常棒的问题。但正如他们所说,如果你不问,你如何学习?
所以,这就是事情:
我们已经开发了这个.JAR文件,可以在Java 1.4下工作,并安装在SUSE 9 Enterprise Server中。
我们还在不同的平台上进行了测试: - Suse 9 Enterprise Server 32位+ JDK 1.4.2_08 + LIBSTDC ++。SO.6: 运行顺利,没有错误返回。
Red Hat 5.5 Server 64位+ JDK 1.4: 运行顺利,没有错误返回。
Suse 9 Enterprise Server 64位+ JDK 1.4.2_08(32位)+ LIBSTDC ++。SO.6: 如果我使用程序的 32 位库,则返回错误说: “线程中的异常”主“java.lang.UnsatisfiedLinkError:/usr/lib/MySharedLibrary.so:/usr/lib/MySharedLibrary.so:undefined symbol:NFQuality”
但是,如果我使用程序的 64 位库,则会返回此错误: “线程中的异常”主“java.lang.UnsatisfiedLinkError:/usr/lib64/MySharedLibrary64.so:/usr/lib64/MySharedLibrary64.so:无法打开共享对象文件:没有这样的文件或目录
我尝试过给java -Djava.library.path命令以及MySharedLibrary所在的路径,但它没有用。
我的问题是:
为什么它会在Suse 9 64位中返回错误,如果它与Suse 9 32位具有完全相同的配置?
我知道架构之间存在差异,好吧。但它不是架构编译问题,因为在RedHat 5.5中它有64位运行。
任何人都可以指导我完成这个难题吗?我可能的解决方案是什么?
谢谢你们所有的大师们。
答案 0 :(得分:0)
您无法从32位JVM链接64位库。如果要链接64位库,请使用64位java。
至于未定义的符号。你可能有一个断开的链接,因为suse缺少一些存在于redhat上的库。我不相信在不了解MySharedLibrary.so
的情况下可以回答这个问题。