在Java应用程序中运行混合32位和64位本地库

3
我们正在为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中运行两个服务。 - technomage
2个回答

3

2

如果您在64位操作系统中安装了一个JRE,那么您可以运行两个JVM,一个是32位的,另一个是64位的。但是在一个JVM中同时运行两者是不可能的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接