我正在努力让oracle oci驱动程序在ubuntu中运行。
我有openjdk版本" 1.8.0_91"
我已经安装了sqlplus,我可以在这里的文件夹中看到它的共享库:
/usr/lib/oracle/12.1/client64/lib
起初sqlplus没有工作,并抱怨它找不到共享库。
要解决此问题,我已在/etc/ld.so.conf
中创建了一个名为oracle.conf
它包含为单行:
/usr/lib/oracle/12.1/client64/lib
然后我运行sudo ldconfig
,sqlplus
现在有效。
我的问题是Java程序仍然无法找到库。我运行命令:
java -XshowSettings:properties
我可以看到库的属性:
java.library.path = /usr/java/packages/lib/amd64
/usr/lib/x86_64-linux-gnu/jni
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
/usr/lib/jni
/lib
/usr/lib
当我运行Java代码时,我收到错误:
java.lang.UnsatisfiedLinkError: no ocijdbc12 in java.library.path
当我运行ldconfig -v时,我可以在顶部看到一个部分:
- /usr/lib/oracle/12.1/client64/lib:
liboramysql12.so -> liboramysql12.so
libmql1.so -> libmql1.so
libnnz12.so -> libnnz12.so
libons.so -> libons.so
libipc1.so -> libipc1.so
libocijdbc12.so -> libocijdbc12.so
libsqlplusic.so -> libsqlplusic.so
libsqlplus.so -> libsqlplus.so
libheteroxa12.so -> libheteroxa12.so
libclntsh.so.12.1 -> libclntsh.so.12.1
libociei.so -> libociei.so
libclntshcore.so.12.1 -> libclntshcore.so.12.1
libocci.so.12.1 -> libocci.so.12.1
正如您所见,图书馆存在。
我认为可能需要设置环境变量LD_LIBRARY_PATH。它目前是空的。如果我设置它:
LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib
运行我的代码时出现同样的错误,java -XshowSettings:properties
没有更改。
有谁知道为什么java没有拿起图书馆?