繁体   English   中英

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

[英]Loading a 32bit .so library in a 64bit JVM

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

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

没有。

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

使用此代码,您可以检查您是否使用64位PC并加载lybrary:

boolean is64bit = System.getProperty("sun.arch.data.model").contains("64");
if(is64bit){
   try {
       System.load("64Bit ibrary");
   } catch (UnsatisfiedLinkError e) {
       System.err.println("Native code library failed to load.\n" + e);
   }
else{
   try {
        System.load("32Bit ibrary");
    } catch (UnsatisfiedLinkError e) {
      System.err.println("Native code library failed to load.\n" + e);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM