【问题标题】:Cannot load native library. Error: java.lang.UnsatisfiedLinkError无法加载本机库。错误:java.lang.UnsatisfiedLinkError
【发布时间】:2011-09-20 15:56:14
【问题描述】:

我无法让 Java 查看我的主目录中的文件“libvensim.so”。

我已尝试设置 LD_LIBRARY PATH...."echo $LD_LIBRARY_PATH" 返回 "./libvensim.so"

当我运行代码时:

java -cp ./vensim.jar:. -Djava.library.path=./libvensim.so Test

我收到错误“无法加载本机库。错误:java.lang.UnsatisfiedLinkError: no libvensim in java.library.path”。

Test.java 是一个简单的类来测试我是否可以访问.so:

import com.vensim.Vensim;

public class Test {

public static void main(String[] args) throws Exception {

    Vensim vensim = new Vensim("libvensim");

}

}

谁能看到我的问题?非常感谢。

【问题讨论】:

  • LD_LIB.._PATH 是文件夹/目录的列表,而不是库。试试看:java -cp ./vensim.jar:. -Djava.library.path=`pwd` Test
  • PS:我不确定 java.library.path 是否与 LD_LIBRARY_PATH 相同。因此,如果这不起作用,请尝试 export LD_LIBRARY PATH=`pwd`:$LD_LIBRARY PATH; java -cp ./vensim.jar:. Test
  • 感谢您的建议,但我尝试更改 LD_LIBRARY_PATH=。和 -Djava.library.path=。并且都没有解决问题....我仍然看到“无法加载本机库。错误:java.lang.UnsatisfiedLinkError: no libvensim.so in java.library.path
  • 你能运行这个并发布输出吗(想确保它是同一个shell):ls -l ./libvensim.so; export LD_LIBRARY PATH=.:$LD_LIBRARY PATH; java -cp ./vensim.jar:. Test
  • [dxxxxx@equity4 ~]$ ls -l ./libvensim.so -rw-rw-r-- 1 dxxxxx dxxxxx 2084462 Sep 2 17:01 ./libvensim.so [dxxxxx@equity4 ~ ]$ export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH [dxxxxx@equity4 ~]$ java -cp ./vensim.jar:.测试无法加载本机库。错误:java.lang.UnsatisfiedLinkError:java.library.path 中没有 libvensim.so

标签: java


【解决方案1】:

LD_LIBRARY_PATH 应该指向包含.so 文件的目录。试试:

java -cp ./vensim.jar:. -Djava.library.path=. Test

export LD_LIBRARY_PATH=/path/to/dir
java -cp ./vensim.jar:. Test

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多