我参与开发一个 Java 项目,该项目使用了一些 C++ 组件,因此我需要Jacob.dll
. (在 Windows 7 上)
java.lang.UnsatisfiedLinkError: no JacobDB in java.library.path
无论我把 Jacob.dll 放在哪里,我都会不断得到......
我寻找了可能的决定,到目前为止我还没有尝试过设置LD_LIBRARY_PATH
变量,指向 .dll 文件。
我没有什么经验,也不熟悉该变量的含义和用法-您能帮帮我吗?
我参与开发一个 Java 项目,该项目使用了一些 C++ 组件,因此我需要Jacob.dll
. (在 Windows 7 上)
java.lang.UnsatisfiedLinkError: no JacobDB in java.library.path
无论我把 Jacob.dll 放在哪里,我都会不断得到......
我寻找了可能的决定,到目前为止我还没有尝试过设置LD_LIBRARY_PATH
变量,指向 .dll 文件。
我没有什么经验,也不熟悉该变量的含义和用法-您能帮帮我吗?
LD_LIBRARY_PATH
是 Linux/Unix 中的预定义环境变量,它设置链接器在链接动态库/共享库时应该查看的路径。
LD_LIBRARY_PATH
包含一个冒号分隔的路径列表,并且链接器将这些路径优先于标准库路径/lib
和/usr/lib
. 标准路径仍将被搜索,但只有在路径列表LD_LIBRARY_PATH
已用尽之后。
最好的使用方法LD_LIBRARY_PATH
是在执行程序之前立即在命令行或脚本上设置它。这样,新LD_LIBRARY_PATH
的就与系统的其余部分隔离开来。
示例用法:
$ export LD_LIBRARY_PATH="/list/of/library/paths:/another/path"
$ ./program
由于您谈论.dll
您在 Windows 系统上,并且.dll
必须将 a 放置在链接器在链接时搜索的路径中,因此在 Windows 中,此路径由环境变量设置PATH
,因此将其添加.dll
到PATH
它应该可以正常工作。
通常您必须java.library.path
在 JVM 的命令行上设置:
java -Djava.library.path=/path/to/my/dll -cp /my/classpath/goes/here MainClass
LD_LIBRARY_PATH
是特定于 Linux 的,是一个环境变量,指向动态加载程序应该在其中查找共享库的目录。
尝试在 PATH 变量中添加 .dll 所在的目录。Windows 将自动在此环境变量中列出的目录中查找。LD_LIBRARY_PATH
可能不会解决问题(除非 JVM 使用它——我不知道)。
LD_LIBRARY_PATH
是用于检查可用动态和共享库的默认库路径。它特定于 linux 发行版。
它类似于PATH
windows 中的环境变量,链接器在链接期间检查可能的实现。
我的错误还与服务找不到所需的.so
文件有关。我使用LD_LIBRARY_PATH
变量来优先考虑链接器拾取的路径以搜索所需的库。
我将服务和.so
文件都复制到一个文件夹中,并将其提供给LD_LIBRARY_PATH
变量
LD_LIBRARY_PATH=. ./service
在同一个文件夹中,我已经给出了上述命令并且它有效。
好吧,错误信息告诉你该怎么做:将 Jacob.dll 所在的路径添加到 java.library.path。您可以像这样在命令行上执行此操作:
java -Djava.library.path="dlls" ...
(假设 Jacob.dll 在“dlls”文件夹中)
另请参见java.library.path 中的 java.lang.UnsatisfiedLinkError no *****.dll