如何将.so文件添加到Linux中的java.library.path

我正在使用一个Java应用程序,它需要在Windows中的java.library.path中的.dll文件。 在Linux中运行相同的应用程序我有相应的.so文件应该被添加到java.library.path在Linux机器,我没有find任何简单的解决scheme,目前为止

我没有把.so放在已经在类path中的文件夹中,但是我的应用程序仍然抱怨java.library.path没有需要的.so文件

我想find:

  1. .so添加到java.library.path
  2. 如何知道它是否已经添加(添加时)

Solutions Collecting From Web of "如何将.so文件添加到Linux中的java.library.path"

启动应用程序之前,将包含的目录添加到LD_LIBRARY_PATH

  export LD_LIBRARY_PATH = $LD_LIBRARY_PATH:/some/pathOfContainingDirectory 

使用java -XshowSettings:properties来显示java.library.path(和其他)值。

我使用java -XshowSettings:properties方法,并找到了以前设置的文件夹的路径,并将我的文件复制到该文件夹

我有很多麻烦弄清楚这一点,请确保您在库名称中有lib前缀。

所以,

  1. export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/some/pathOfContainingDirectory"

  2. 重命名库以lib作为前缀。 [添加这个作为构建脚本的一部分]

     mv JNIDemo.so libJNIDemo.so 

检查此答案的详细说明https://stackoverflow.com/a/3987567/2076566

 File file = null; private String[] libs_path = System.getProperty("java.library.path").split(":"); public boolean isInstalled() { boolean isInstalled = false; for(String lib : libs_path) { file = new File(lib+"/"+"yourlib.so"); if(file.exists()) { isInstalled = true; break; } } return isInstalled; } public void install() { if(!isInstalled) { for(String lib: lib_path) { // copy your .so to lib break; } } }