java - Java 1.4 和 Suse 9 的 32 位和 64 位共享库行为

标签 java linux suse

首先,对于你们所有人来说,这可能是一个非常菜鸟的问题。但正如他们所说,如果您不问,您如何学习?

所以,事情是这样的:

我们开发了这个 .JAR 文件以在 Java 1.4 下工作,并安装在 SUSE 9 Enterprise Server 中。

我们也在不同的平台上进行了测试: - Suse 9 企业服务器 32 位 + JDK 1.4.2_08 + LIBSTDC++.SO.6: 运行顺利,没有返回错误。

  • Red Hat 5.5 服务器 64 位 + JDK 1.4: 运行顺利,没有返回错误。

  • Suse 9 Enterprise Server 64 位 + JDK 1.4.2_08(32 位)+ LIBSTDC++.SO.6: 如果我使用程序的 32 位库,它会返回一条错误消息: “线程“main”中的异常 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 32 位完全相同的配置,为什么它会在 Suse 9 64 位中返回错误?

我知道架构之间存在差异,好的。但这不是架构编译问题,因为在 64 位的 RedHat 5.5 中它确实可以运行。

谁能指导我解决这个难题?我可能的解决方案是什么?

谢谢你们所有的大师。

最佳答案

您不能从 32 位 JVM 链接 64 位库。如果要链接 64 位库,请使用 64 位 java。

至于 undefined symbol 。您的链接可能已损坏,因为 suse 缺少 redhat 上存在的某些库。我认为如果不了解更多关于 MySharedLibrary.so 的信息,就无法回答这个问题。

关于java - Java 1.4 和 Suse 9 的 32 位和 64 位共享库行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9727026/

相关文章:

java - 在 Sametime 7.5.1 中使用 AlertManager

c++ - 使用旧 GLIBC 版本检测堆栈溢出

python - 在 openSUSE 上安装最新的 Python

Java符号查找错误:/usr/lib64/jvm/java-11-openjdk-11/lib/libnio.所以: undefined symbol :initInetAddressIDs

java - 是否可以在不重新启动应用程序的情况下重新加载 WebSphere Application Server (WAS) 中的共享库?

java - 尝试 sslException 时套接字已关闭异常

java - 将第二个项目添加到我的堆栈 Pane 时,第一个项目失去了它的 Event/MouseOn。为什么?我该如何解决? JavaFX

linux - 是否有用于创建 AVI 文件的 Linux 库?

linux - 如何从包含 PID 列表的文件中检查进程是否处于事件状态?

r - 在 R 中安装 kernlab 包