gpt4 book ai didi

java - -Djava.library.path 问题

转载 作者:太空宇宙 更新时间:2023-11-04 13:12:54 24 4
gpt4 key购买 nike

我的 Java 应用程序使用 JNI 访问一些 C++ native 代码。我特别需要这个库 symbolic_graph_jni(由我编写),它需要 glog(来自谷歌)。我确认 libsymbolic_graph_jni.so 依赖于 libglog.so.0。这是 ldd 中依赖项的结构:

|1276|lib>ldd libsymbolic_graph_jni.so 
....
libcommon.so => not found
libstorage.so => not found
libdatabase.so => not found
linux-vdso.so.1 => (0x00007fff9d5ff000)
libglog.so.0 => not found
....

在我的 Java 应用程序中,尽管我设置了:

-Djava.library.path=~/myproduct/build/impl/libs

该目录包含:

-rwxr-xr-x 1 mldv eng    18389 Aug  9 08:54 libboost_system.so.1.58.0
-rwxr-xr-x 1 mldv eng 3141033 Aug 9 08:54 libcommon.so
-rwxr-xr-x 1 mldv eng 47034505 Aug 9 08:54 libdatabase.so
-rw-r--r-- 1 mldv eng 528031 Aug 9 08:54 libgcc_s.so.1
-rwxrwxrwx 1 mldv eng 1451910 Aug 9 08:54 libgflags.so.2
-rwxrwxrwx 1 mldv eng 873073 Aug 9 08:54 libglog.so.0
-rwxrwxrwx 1 mldv eng 6520243 Aug 9 08:54 libstdc++.so.6
-rwxr-xr-x 1 mldv eng 8060525 Aug 9 08:54 libstorage.so
-rwxr-xr-x 1 mldv eng 1818771 Aug 9 08:54 libsymbolic_graph_jni.so
-rwxr-xr-x 1 mldv eng 154808 Aug 9 08:54 libutil.so

我总是得到:

java.lang.UnsatisfiedLinkError: ~/myproduct/build/impl/libs/libsymbolic_graph_jni.so: libglog.so.0: cannot open shared object file: No such file or directory

换句话说,在设置了 -Djava.library.path 后,我的 Java pp 找到了 libsymbolic_graph_jni.so,但找不到该库所依赖的 glog.so.0,它位于同一目录中!

什么给了?我在一个目录中有所有共享库,我需要做什么才能让 Java 类加载器找到它们?

最佳答案

尝试启动您的 java应用程序(假设您使用的是 Linux):

1) export LD_LIBRARY_PATH=<path-containing-so's> (参见 here

2) java MainClass

-D 属性只影响 JVM 查找 native 库的位置。

关于java - -Djava.library.path 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38856409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com