java - -Djava.library.path 是否适用于 UNIX JVM?

标签 java linux java-native-interface aix

我有一个 Java 应用程序,它依赖于一些用 C 语言编写的遗留代码,它通过 JNI 访问这些代码。 native 库存储在一个子目录中(实际上,有两个子目录:一个包含 32 位库,一个包含 64 位库)。

在 Windows 中,以下命令行形式可以正常工作:

java -Djava.library.path=nativelib64 -classpath myapp.jar;jni_lib.jar MyApplication

但是 AIX 和 Linux 上的等效项(基本上类路径中的分号替换为冒号)因 UnsatisfiedLinkErrors 而失败 - 我不得不求助于在调用之前显式设置 LIBPATH 或 LD_LIBRARY_PATH,因为我没有尝试将 -Djava.library.path 设置为(例如“nativelib64”、“./nativelib64”、“/full/path/to/myappdir/nativelib64”)似乎有效。

UNIX 版本的 JVM 是否不支持从命令行设置 java.library.path 属性?

最佳答案

参见 http://kalblogs.blogspot.co.uk/2009/01/java.html :

java.library.path only works to resolve the immediate native library that you are loading in your code.

如果此直接库依赖于其他库(在 java.library.path 定义的同一路径内,或在不同位置),则这些其他库将通过操作系统的标准机制加载.在这种情况下,还需要相应地设置 LD_LIBRARY_PATH

关于java - -Djava.library.path 是否适用于 UNIX JVM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16103106/

相关文章:

java - 如果 c 比 b 小得多,找到 a**b % c(a 幂 b 模 c)的最佳方法是什么?

java - 数独算法生成 0 个值

java - 处理JNI异常的简单代码

java - 自动增加值并设置从 1 开始 hibernate

java - 用于验证字母数字或一组特殊字符的正则表达式

linux - DNS 服务器无法解析本地主机名称

linux - 实时系统中高效的内存调度算法

linux - opensuse samba客户端连接到windows服务器

java - JNI_CreateJavaVM 在 64 位 C 中失败

java - 收到回调后从 JNI 调用 Java 方法