java - ejdb Java 绑定(bind)不起作用 "no jejdb in java.library.path"

标签 java java-native-interface ejdb

我正在尝试让 ejdb ( http://ejdb.org/ ) 的 java 绑定(bind)正常工作。 可以在 Github 上找到绑定(bind):https://github.com/Softmotions/ejdb-java

可以通过通常的 ./configure && make && make install 步骤构建绑定(bind)。结果是目标目录中的 libjejdb.so 文件和 java 库。

运行示例失败:

java -Djava.library.path=/Users/foo/test/lib -jar jejdb-sample1.jar
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jejdb in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1857)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1119)
at org.ejdb.driver.EJDB.<clinit>(EJDB.java:56)
at org.ejdb.sample1.Main.main(Main.java:19)

我检查了提供的 java.library.path,它确实包含 libjejdb.so。

之后,我创建了多个名为 jejdb.som jejdb 的副本,依此类推,只是为了确定:

~/test/lib % file *
jejdb:             Mach-O 64-bit dynamically linked shared library x86_64
jejdb.so:          Mach-O 64-bit dynamically linked shared library x86_64
libjejdb.so:       Mach-O 64-bit dynamically linked shared library x86_64
libjejdb.so.1:     Mach-O 64-bit dynamically linked shared library x86_64
libjejdb.so.1.0.0: Mach-O 64-bit dynamically linked shared library x86_64

我仍然遇到同样的错误...

代码中的库是通过

加载的
static {
    System.loadLibrary("jejdb");
}

我希望 libjejdb.so 是正确的文件名。

我很困惑,仍然找不到该库?

最佳答案

奇怪的是,你首先能够构建代码,因为在我这边,我需要更改configure、configure.ac和Makefile.in中的内容,以便能够在MacOSX上正确编译

但是,假设这不是一个真正的问题,我执行了以下操作来运行示例,并假设您的 .so 文件安装在 ~/test/lib 中,如上所述

# remove un-needed environment variable
unset LD_LIBRARY_PATH
# set proper shared library names on MacOSX in 
for n in libjejdb.dylib libjejdb.1.dylib libjejdb.1.0.0.dylib; do ln -s libjejdb.so ~/test/lib/$n; done
# Relaunch example using your previous command
java -Djava.library.path=/Users/foo/test/lib -jar jejdb-sample1.jar

希望这能解决您的问题

致以诚挚的问候

关于java - ejdb Java 绑定(bind)不起作用 "no jejdb in java.library.path",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28728126/

相关文章:

java - 如何使用 hadoop.mapreduce.lib.output.MultipleOutputs 使用 oozie 工作流创建目录结构?

Android 从 C++ JNI 代码中的另一个 Activity 类调用 Java 函数

java - 如何从 JNI 的现有 c 项目 (concorde) 创建 .dylib

serial-port - RS232 FTDI FT_OPEN 返回 FT_ERROR CODE = 3

go - No Such file or directory on go get github.com/mkilling/goejdb

java - 如何在 Google map 上绘制距用户输入点已定义距离(米)的多边形(矩形)

java - SPRING:如何根据从 Flex UI 传递的信息以编程方式实例化类

java - 选择相同位置时禁用动画底部导航