Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java.library.path中找不到ocijdbc11_Java_Oracle_Jdbc_Aix_Oracle Call Interface - Fatal编程技术网

在java.library.path中找不到ocijdbc11

在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需要什么文

我从其他开发人员那里继承了一个小型java实用程序——只有几个.java文件和可执行文件.jar

我通过传递一个连接字符串来运行java程序。现在我需要将到Oracle的连接字符串从
jdbc:Oracle:thin:/@host
更改为
jdbc:Oracle:oci:/@host
,以开始使用胖驱动程序而不是瘦驱动程序

结果我得到了错误:“ocijdbc11(在java.library.path中找不到)”

以下是我的问题:

  • ocijdbc11是ojdbc7.jar的一部分吗?或者java需要什么文件? ANSW:ocijdbc11是一个库:
    /oracle/client/o11r2/lib/libocijdbc11.so
  • 我如何查看java使用哪些路径来查找
    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