在64位JVM中加载32位.so库

Edu*_* Z. 2 java cpu-architecture dynamic-loading .so

我们正在开发一个在Linux环境(现在是Ubuntu)上运行的Java应用程序,它与一块硬件进行通信.所述硬件使用由制造商提供的仅用于x86架构的.so库.

问题是,我们非常希望在64位JVM上运行它.在x86 JVM中加载库工作正常但我们无法在64位版本上加载.那么,除了切换到x86 JVM之外,还有其他方法可以将这个lib提供给我的64位Java应用程序吗?例如,我是否有可能在x64中编写另一个os包装器库,然后调用x86版本,以便JVM可以加载我的64位包装器?

And*_*nle 8

没有.

您无法将32位库加载到64位进程的地址空间中.

  • 我能想出使用32位代码的唯一方法是让另一个进程(32位)与硬件通信,并在该进程和64位JVM之间建立IPC机制.不是微不足道的,但肯定是可能的. (3认同)
  • 我同意这不是微不足道的,取决于很多因素,虽然我没有得到OP的库与Java端交互的印象.听起来像是设备的comm接口.我和我一起工作的人多次这样做过.将设备I/O随机播放到单独的进程.如果它是< - >数据输出类型的数据,则不应该难以在两个进程之间移动数据. (2认同)