我参与开发一个使用一些C ++组件的Java项目,因此我需要Jacob.dll。 (在Windows 7上)
无论我把Jacob.dll放在哪里,我都会得到java.lang.UnsatisfiedLinkError: no JacobDB in java.library.path
....
我寻找可能的决定,到目前为止我还没有尝试过的是设置LD_LIBRARY_PATH变量,指向.dll文件。
我没什么经验,我不熟悉该变量的含义和用法 - 你能帮帮我吗?
答案 0 :(得分:49)
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
必须放在链接器链接器搜索的路径上,在windows中这个路径是由环境变量设置的{ {1}},请将PATH
添加到.dll
,它应该可以正常工作。
答案 1 :(得分:24)
通常,您必须在JVM的命令行上设置java.library.path
:
java -Djava.library.path=/path/to/my/dll -cp /my/classpath/goes/here MainClass
答案 2 :(得分:8)
LD_LIBRARY_PATH是特定于Linux的,是一个环境变量,指向动态加载程序应查找共享库的目录。
尝试添加.dll在PATH变量中的目录。 Windows将自动查看此环境变量中的目录listet。 LD_LIBRARY_PATH可能无法解决问题(除非JVM使用它 - 我不知道)。
答案 3 :(得分:1)
好吧,错误消息告诉您该怎么做:将Jacob.dll所在的路径添加到java.library.path。你可以在命令行上这样做:
java -Djava.library.path="dlls" ...
(假设Jacob.dll位于“dlls”文件夹中)
另见java.lang.UnsatisfiedLinkError no *****.dll in java.library.path
答案 4 :(得分:1)
LD_LIBRARY_PATH
是默认的库路径,可访问该路径以检查可用的动态库和共享库。它特定于linux发行版。
类似于窗口中的环境变量PATH
,链接器在链接期间检查可能的实现。
答案 5 :(得分:0)
我的错误还与服务找不到所需的.so
文件有关。
我使用了LD_LIBRARY_PATH
变量来优先考虑链接程序选择的路径以搜索所需的lib。
我将服务和.so
文件都复制到一个文件夹中,并将其作为{p>
LD_LIBRARY_PATH
我位于上面给出的命令所在的文件夹中,并且可以正常工作。