我有一个问题,包括Linux Ubuntu上我的Java项目的本机库。
目录/mnt
包含启动所需的文件treedb.jar
和jkyotocabinet.so
:
root@vtt9:/mnt# ls -l
-rwxr-xr-x 1 root root 1948919 Mar 11 2014 jkyotocabinet.so
-rwxr-xr-x 1 root root 1404322 Nov 18 16:11 treedb.jar
我用param -Djava.library.path=.
启动程序:
root@vtt9:/mnt# sudo java -Xms5000m -Xmx51000m -d64 -jar
-Djava.library.path=. treedb.jar
程序将字符串打印到控制台:
current dir = /mnt/.
java library path = .
然后我在System.loadLibrary("jkyotocabinet");
上有例外:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jkyotocabinet in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886)
at java.lang.Runtime.loadLibrary0(Runtime.java:849)
at java.lang.System.loadLibrary(System.java:1088)
at treedb.Main.main(Main.java:27)
我还查看java -XshowSettings:properties
,将jkyotocabinet.so
放到java.library.path
中的其他目录中,以编程方式设置System.setProperty( "java.library.path", "." );
我不明白它有什么问题?在Windows上它很棒。我只需要将.so
替换为.dll
。