3

只需花 3 个小时尝试java.lang.UnsatisfiedLinkError: no jtokyocabinet in java.library.path在 Linux 中解决 Eclipse 中的问题。

  • 下载的 TC 和 TC-Java 源代码,
  • 使用 ./config --prefix=/usr 构建它们(所以所有与“JNI”相关的东西都应该在 /usr/lib 中)
  • 设置 LD_LIBRARY_PATH=/usr/lib 和 CLASSPATH="$CLASSPATH:/usr/local/lib/tokyocabinet.jar" 并在 .profile 中导出
  • 将 tokyocabinet.jar 导入到项目中。

我是否缺少正确的 -Djava.library.path= 以外的设置。设置?我什至在网络上或文档中都找不到任何关于jtokyocabinet网络的内容。让这件事发挥作用的秘诀是什么?

4

4 回答 4

1

有同样的问题,在我的例子中,使用 OpenSUSE 12.3 64 位和 Eclipse。首先,可以从这个存储库下载kyotocabinet-java包:

http://download.opensuse.org/repositories/devel:/libraries:/c_c++/openSUSE_12.3/

这个包提供/usr/lib64/libjkyotocabinet.so.1.1.0是kyotocabinet jar 使用的库,你可以从maven 或官方网站获得。寻找这个库,我发现创建了一个 slink:

xxxx@xxxx:/usr/lib64> ls -al /usr/lib64/libjkyoto*
/usr/lib64/libjkyotocabinet.so.1 -> libjkyotocabinet.so.1.1.0
/usr/lib64/libjkyotocabinet.so.1.1.0

我刚刚创建了一个新的链接,最后没有“.1”......

sudo ln -s libjkyotocabinet.so.1.1.0 libjkyotocabinet.so

/usr/lib64/libjkyotocabinet.so -> /usr/lib64/libjkyotocabinet.so.1.1.0

一切正常,似乎

System.loadLibrary("jkyotocabinet");

如果库名称以与“.so”不同的名称结尾,则不起作用

于 2013-05-27T22:11:20.617 回答
1

那是因为你的代码找不到tokyocabinet的*.so and *.a文件,一般都在/usr/local/lib,运行如下命令:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

然后再次尝试您的代码。

于 2011-11-14T12:48:37.683 回答
1

尝试链接到 libjtokyocabinet.so。. .0 在您的 JAVA_HOME/jre/lib/i386 中。

于 2010-07-19T09:37:41.677 回答
0

是的,你错过了一些东西。Eclipse 控制自己的类路径,因此无论您在 Eclipse 之外的环境中设置什么,都可能没有任何效果。

您需要进入项目的属性,找到“构建路径”设置并将 tc.jar(或 jars)的路径添加到那里的构建路径中。

在 eclipse 项目中设置 /lib 目录可能更容易,将你的 tokyo jar 复制到那里并将其添加到构建路径中。这样,它就成为您项目的一部分(并且可以从 Eclipse 安装转移到 Eclipse 安装),而不是成为外部系统依赖项。

于 2010-07-13T21:48:44.450 回答