【发布时间】:2016-03-12 02:52:49
【问题描述】:
我们正在为 Linux 开发一个桌面 Java 应用程序,该应用程序使用本地 .so 库访问一系列外围设备(USB 和串行端口预外围设备)。一些供应商仅提供 32 位库,而另一些供应商仅提供 64 位版本。由于我们需要所有外围设备在我们的应用程序中运行,我们必须找到一种方法来运行这两种架构。
我们正在使用 JNA 连接到 Linux 文件系统中的本机库。当我们在 64 位 JRE 下运行我们的软件时尝试访问 32 位库时,我们会收到以下错误消息:
java.lang.UnsatisfiedLinkError: /usr/lib/jni/libsatprotocol.so: wrong ELF class: ELFCLASS32
有没有办法在一个 JRE 中运行这两种架构?我们可以将某些 32 位 JRE 库添加到我们的 64 位 JRE 中吗?以不同的方式访问本机库是否可行?
【问题讨论】:
-
您应该在一个架构中编写一个最小服务,通过 REST 或基于套接字的 API 与另一个架构进行通信。您不能在同一个 JVM 中同时运行两者。
标签: java 32bit-64bit jna elf