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

时间:2013-04-19 11:02:08

标签: java linux java-native-interface aix

我有一个Java应用程序依赖于用C编写的一些遗留代码,它通过JNI访问。本机库存储在子目录中(实际上,有两个子目录:一个具有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属性?

2 个答案:

答案 0 :(得分:4)

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

  

java.library.path仅用于解析您在代码中加载的直接本机库。

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

答案 1 :(得分:1)

您需要使用'LD_LIBRARY_PATH'变量。

  

LD_LIBRARY_PATH:本机代码库(在Linux上,除了   此变量的值,查找路径通常包含   / usr / local / lib,/ usr / lib,/ lib和其他一些)。 LD的名字来了   来自动态加载器,将库加载到的系统组件   动态链接的可执行文件。

编辑:

点击此链接:http://www.chilkatsoft.com/java-loadLibrary-Linux.asp