Oracle JDBC连接:java.library.path中没有ocijdbc9

时间:2014-08-07 15:43:22

标签: java oracle jdbc

我在尝试连接到oracle数据库时遇到以下错误, 当我在网上搜索时,建议是在类路径上添加所需的jar,我已经这样做了。我甚至尝试创建一个运行配置,在类路径上添加jar,仍然得到相同的错误。

请帮忙,

错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no ocijdbc9 in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1738)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    at java.lang.System.loadLibrary(System.java:1028)
    at oracle.jdbc.oci8.OCIDBAccess.logon(OCIDBAccess.java:262)
    at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:346)
    at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:468)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:185)
    at com.example.DAO1.main(DAO1.java:13)

代码:

package com.example;

import java.sql.*;
import java.io.*;

class DAO1 {
    public static void main(String args[]) throws SQLException, IOException {
        // Load the driver
        DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

        // Connect to the database
        // You can put a database name after the @ sign in the connection URL.
        Connection conn = DriverManager.getConnection(
                "jdbc:oracle:oci8:@mydevdb:1521:mysandbox", "uname", "pwd");

        System.out.println(conn);

        // Close the connection
        conn.close();
    }
}

我添加了ojdbc14.jar

2 个答案:

答案 0 :(得分:5)

您需要JDBC瘦驱动程序,它是100%Java,而不是OCI驱动程序。这需要一个DLL,JVM告诉你的不是LD_LIBRARY_PATH。

将网址更改为

Connection conn = DriverManager.getConnection(
                "jdbc:oracle:thin:@mydevdb:1521:mysandbox", "uname", "pwd");

我也不喜欢你的司机JAR。我建议至少得到ojdbc6.jar。 ojdbc14.jar是JDK 1.4复古 - 过时了。

答案 1 :(得分:1)

切勿手动调用DriverManager.registerDriver()方法。 JDBC规范要求驱动程序在加载类时注册自己,并通过Class.forName()加载类。在JDBC 4中,驱动程序只能通过类路径自动加载。