【问题标题】:Java Library paths issuesJava 库路径问题
【发布时间】:2012-07-25 17:07:08
【问题描述】:

我在 /data/subv/Mem 中有以下 JNI 共享库,我已将 LD_LIBRARY_PATH 设置为:

  LD_LIBRARY_PATH=/data/subv/Mem 

其中包含两个文件:bmemBridgelib.so 和 memBridgelib.so,生成使用:

  gcc -I"/usr/lib/jvm/java-6-sun/include" -I"/usr/lib/jvm/java-6-sun/include/linux" -o 
  libmemBridgelib.so -shared -Wl,-soname,libmemBridge.so JniBridge.c -static -lc -fPIC

我在我的 Java 程序中加载库以使用 JNI,如下所示

static {
    System.loadLibrary("memBridgelib");
}

但得到以下错误:

 Caused by: java.lang.UnsatisfiedLinkError: no memBridgelib in java.library.path

当我打印库路径时,我可以确认 mem 文件夹不在其中:

  /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server:/usr/lib/jvm/java-6-openjdk/jre/lib/amd64:/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib/jni:/lib:/usr/lib

有什么想法吗?所有其他相关问题似乎都可以通过设置 LD_LIBRARY_PATH

谢谢

【问题讨论】:

    标签: java classpath shared-libraries static-libraries


    【解决方案1】:
    java -Djava.library.path=/data/ncrooks/subv/stream-paas/Mem[:<other_lib_paths>] ...
    

    More details.

    【讨论】:

    • 这会覆盖整个类路径。我正在用我无法真正修改的 gradlew 脚本编译我的程序......我同意这将是一个简单的答案:p
    • @user1018513 - 它不会影响 classpath,是的,它是唯一的解决方案。如果您需要库路径上的其他项,也请添加它们。
    • 为什么 LD_LIBRARY_PATH 对此不起作用?似乎为其他人工作
    • 我很好奇为什么设置 LD_LIBRARY_PATH 在我见过的其他问题中起作用,但不是这个问题。我最终请求允许修改脚本。现在工作正常。谢谢
    猜你喜欢
    • 2013-10-25
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2010-09-24
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多