java - 在 Java 中加载 32 位或 64 位 JNI 库

原文 标签 java java-native-interface

这个问题在这里已经有了答案:




9年前关闭。




Possible Duplicate:
Java : switching between dll depends on system architecture (32/64)



在我的 Java 应用程序中,我需要一个可用于 32 位和 64 位的 JNI 库。我不想发布我的应用程序的两个不同版本,所以我想发布带有两个库的应用程序,并且应用程序必须自行确定要加载哪个库(foobar32.so 或 foobar64.so)。我怎么做?

我想尝试加载第一个,如果这引发异常,那么我加载第二个,但这听起来很难看。

是否有一些我可以检查的系统属性来确定是使用 32 位 Java 还是 64 位 Java 来运行我的应用程序?我知道有一些 os.arch属性,但根据 this answer,返回值似乎非常不可预测.

那么让应用程序决定加载 32 位还是 64 位 JNI 库的最佳方法是什么?

最佳答案

为什么不可预测?您只想检测它是否是 32 位系统,在这种情况下它将始终是 x86(当然对于 x86 处理器),其他一切都意味着 64 位。

如果您知道您的代码也可以在 PPC 或其他非 x86 处理器上执行,问题就会开始。但是在这种情况下,您可能会使用带有异常驱动流控制的丑陋 hack,并使用 try {} catch() 来“检测”这种情况。

恕我直言 os.arch 将是最好的解决方案。

关于java - 在 Java 中加载 32 位或 64 位 JNI 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5449029/

相关文章:

java - 用Java乘以表示为数组的数字?

java - 用Java创建日期对象的最有效方法是什么

java - 无法在 elasticsearch 中对大文件进行批量索引

linux - 在Linux上构建Skia时出现问题

android - Android L预览运行艺术的java.lang.StackOverflow错误

java - JNI c到Java的类

java - JNI与JNA的性能

java - 用Java创建这种模式? (我的循环无效)

java - 设置pdf内容页面的标题

C++/CLI UTF-8 和 JNI 不能正确转换 Unicode 字符串