Соединение с Oracle JDBC: нет ocijdbc9 в java.library.path

1

Я получаю ошибку ниже при попытке подключиться к базе данных оракула. Когда я просматриваю в Интернете, советую добавить требуемую банку в путь к классам, который я уже сделал. Я даже попытался создать конфигурацию запуска, добавил jar в classpath, все еще получая ту же ошибку.

Пожалуйста помоги,

Ошибка:

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

  • 1
    только что заметил, что после того, как я изменил строку подключения на «jdbc: oracle: thin», ошибка исчезла! хотя не понятно
Теги:
jdbc

2 ответа

5
Лучший ответ

Вам нужен тонкий драйвер JDBC, который является 100% Java, а не драйвером OCI. Для этого требуется DLL, о которой JVM говорит вам, нет в LD_LIBRARY_PATH.

Измените URL-адрес на

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

Мне не нравятся ваши JAR-драйверы. Я бы рекомендовал получить ojdbc6.jar как минимум. Ojdbc14.jar - это старинный JDK 1.4 - устаревший.

  • 0
    Я изменил на jdbc: oracle: thin и проверил, и ошибка исчезла, хотя не знал причину +1, спасибо за причину. Что касается версии jar, я взял ее из этой ветки - stackoverflow.com/questions/919921/… . Обновится до ojdbc6.jar, я использую jdk1.6. Я мог бы принять как ответ в ближайшее время
  • 0
    Привет, @duffymo. Можете ли вы помочь мне подсказать несколько указателей на этот ТАК вопрос, который я только что опубликовал, когда у вас есть шанс - stackoverflow.com/questions/25190219/…
1

Никогда не DriverManager.registerDriver() метод DriverManager.registerDriver() вручную. Спецификация JDBC требует, чтобы драйвер регистрировался при загрузке класса, а класс загружался через Class.forName(). В JDBC 4 драйверы могут быть загружены автоматически, просто находясь на пути к классу.

  • 0
    Вот как это делается в примере с docs.oracle.com: docs.oracle.com/cd/A84870_01/doc/java.816/a81354/samapp2.htm
  • 0
    но иногда вы можете в конечном итоге зарегистрировать свой класс водителя дважды
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню