在java.library.path中找不到ocijdbc11
我从其他开发人员那里继承了一个小型java实用程序——只有几个.java文件和可执行文件.jar 我通过传递一个连接字符串来运行java程序。现在我需要将到Oracle的连接字符串从在java.library.path中找不到ocijdbc11,java,oracle,jdbc,aix,oracle-call-interface,Java,Oracle,Jdbc,Aix,Oracle Call Interface,我从其他开发人员那里继承了一个小型java实用程序——只有几个.java文件和可执行文件.jar 我通过传递一个连接字符串来运行java程序。现在我需要将到Oracle的连接字符串从jdbc:Oracle:thin:/@host更改为jdbc:Oracle:oci:/@host,以开始使用胖驱动程序而不是瘦驱动程序 结果我得到了错误:“ocijdbc11(在java.library.path中找不到)” 以下是我的问题: ocijdbc11是ojdbc7.jar的一部分吗?或者java需要什么文
jdbc:Oracle:thin:/@host
更改为jdbc:Oracle:oci:/@host
,以开始使用胖驱动程序而不是瘦驱动程序
结果我得到了错误:“ocijdbc11(在java.library.path中找不到)”
以下是我的问题:
/oracle/client/o11r2/lib/libocijdbc11.so
ocijdbc11
$ ls /oracle/client/o12r1/
assistants diagnostics jlib oui slax
bin dmu ldap owm sqlplus
cdata has lib perl srvm
cfgtoollogs hs network plsql ucp
clone install nls precomp usm
crs instantclient odbc QOpatch utl
css inventory OPatch racg wwg
cv javavm opmn rdbms xdk
dc_ocm jdbc oracore relnotes
deinstall jdk oraInst.loc root.sh
UPD我试图使用选项-Djava.library.path=/oracle/client/o11r2
,但出现了其他错误。但我仍然不知道如何使用Oracle 12.1而不是11.2
UPD2我已将环境路径更改为使用Oracle 12而不是11。现在错误看起来像是ocijdbc12(在java.library.path中找不到)
。文件/oracle/client/o12r1/lib/libocijdbc12.so存在
我将
/oracle/client/o11r2/lib
添加到LD\u LIBRARY\u PATH
——同样的错误(ocijdbc12(在java.LIBRARY.PATH中找不到)
)。我尝试了选项-Djava.library.path=/oracle/client/o12r2/lib
——同样的错误。您能帮我修复它吗?ocijdbc11是一个本机库(.so或.dll),您可以从Oracle即时客户端下载。该层包含对OCI的JNI调用。如果要使用厚驱动程序,则需要此库。确保安装与您的OJDBCJAR相匹配的版本(即,看起来您使用的是11.2版本的JDBCJAR,否则如果您使用的是12.1版本的OJDBCJAR,则错误会抱怨ocijdbc12丢失)。要运行您的程序,您需要ojdbcN.jar
和libocijdbcM.so
。这些组件必须来自同一个Oracle客户端;N表示Java版本,M表示Oracle版本
当然,您需要libclntsh.so
及其相关库
您可以试试这个(假设java7,64位):
编辑:java可执行文件和库应具有相同的位号(32或64),例如,这种组合不起作用:
$ file $JAVA_HOME/bin/java $ORACLE_HOME/lib/libclntsh.so $ORACLE_HOME/lib/libocijdbc12.so
/usr/java6/bin/java: executable (RISC System/6000) or object module not stripped
/orabin/OraHome_Current/lib/libclntsh.so: 64-bit XCOFF executable or object module not stripped
/orabin/OraHome_Current/lib/libocijdbc12.so: 64-bit XCOFF executable or object module not stripped
这里java是32位的,Oracle是64位的
编辑:此问题标记为AIX。这是故意的吗?“看起来您正在使用11.2版本的JDBCJAR”——是的,我想是这样。但我如何才能将路径更改为12.1?它只是一些环境变量,还是我应该重新编译java程序?您不需要重新编译。只需将JDBCJAR替换为12.1或12.2版本的jar,您可以从OracleJDBC下载页面下载。请注意,12.2中的版本仅适用于JDK8或更高版本(不支持JDK7)。“只需将JDBCJAR替换为12.1中的版本”——替换位置?Java使用Oracle11.2,但我希望它使用12.1(查看您的类路径,查看您当前使用的JDBCJAR,如果需要,用更新的驱动程序替换它。一切都像您编写的一样…但仍然不起作用(请编辑您的帖子并粘贴相关行…或作为文件或其他内容附加)。。。
$ file $JAVA_HOME/bin/java $ORACLE_HOME/lib/libclntsh.so $ORACLE_HOME/lib/libocijdbc12.so
/usr/java6/bin/java: executable (RISC System/6000) or object module not stripped
/orabin/OraHome_Current/lib/libclntsh.so: 64-bit XCOFF executable or object module not stripped
/orabin/OraHome_Current/lib/libocijdbc12.so: 64-bit XCOFF executable or object module not stripped