Maven, включая ocijdbc19 в java.library.path
Как включить заархивированный файл DLL в проект maven? И как мне указать, какую библиотеку DLL использовать в зависимости от работающей операционной системы (Windows/Linux)?
Я пытаюсь использовать ocijdbc19 в своем проекте maven. Его можно скачать здесь: https://www.oracle.com/database/technologies/instant-client/downloads.html
И он используется с этим драйвером (работает в Java 11):
com.oracle.ojdbc ojdbc10 19.3.0.0
Не существует ojdbc10 версии 19.6.0.0, поэтому мне пришлось понизить версию ocijdbc19 для соответствия.
Он упакован в виде zip-файла с DLL-файлом. Как мне включить его в свой проект, чтобы он работал в упакованном виде?
UnsatisfiedLinkError: no ocijdbc19 in java.library.path
В java.library.path включает рабочий каталог ./ но именно там находится помпон.
Я пробовал добавить опцию JVM -Djava.library.path=».\lib» , но затем это полностью переопределяет исходное значение, и я получаю эту ошибку:
lib\ocijdbc19.dll: Can't find dependent libraries
Другая проблема заключается в том, что я разрабатываю на машине Windows, но этот проект будет развернут на машине linux. Существуют отдельные версии ocijdbc19 для разных ОС. Конфигурация Maven должна переключаться между каждым пакетом.
Соединение с Oracle JDBC: нет ocijdbc9 в java.library.path
Я получаю ошибку ниже при попытке подключиться к базе данных оракула. Когда я просматриваю в Интернете, советую добавить требуемую банку в путь к классам, который я уже сделал. Я даже попытался создать конфигурацию запуска, добавил 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.(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(); >>
Ошибка “no ocijdbc11 in java.library.path” и что с ней делать
Реализации технологии JDBC для Oracle дает возможность java-программам обращаться к базе двумя методами:
Тонким клиентом (jdbc thin), по сути, представляющим собой реализацию протокола SQL* Net через TCP/IP на основе Java-сокетов.
Тонкому клиенту никакие клиентские библиотеки не нужны. Он платформо-независим и прекрасно себе может работать даже через java-аплеты в браузере.
Толстый клиент (jdbc oci) – для взаимодействия с базой использует интерфейс вызовов оракла (Oracle Call Interface) предоставляемый специальным OCI-драйвером, который должен быть установлен на клиентской машине. OCI-драйвер представляет собой набор библиотек, поставляемых вместе с клиентским или серверным ПО. Самый простой способ их найти – скачать Oracle instant client. Работать с базой данных через интерфейс OCI можно напрямую из java-программ используя все оракловые плюшки вроде ООП-биндингов через OCCI и т.п.
Если на клиенте – машине с которой не обходимо установить соединение с базой соответствующей версии OCI-драйвера нет – то сообщение об ошибке будет примерно таким: “ no ocijdbc11 in java.library.path “. Если библиотека есть, но система не имеет ни малейшего представления о ней – читай как: “ проверь свои переменные PATH! ” – ошибка будет подобного же типа.
В ряде случаев требуемой версии oci драйвера просто нет в природе – с этим прискорбным фактом я столкнулся когда пытался завести на Маке распоследнюю версию SQLDevelopera. На момент написания последняя доступная версия клиентских библиотек для Mac Os – была 10.
Меж тем мучительно хотелось попасть в базу.
При работе с базой я обычно устанавливаю тип соединения TNS – при этом как раз и используются OCI-драйвер.
Для того чтобы соединение к базе было установлено достаточно изменить тип на Advanced и вручную указать строку вида:
jdbc:oracle:thin:@[HOST][:PORT]:SID
1 comment
Maven, включая ocijdbc19 в java.library.path
Как включить заархивированный файл DLL в проект maven? И как мне указать, какую библиотеку DLL использовать в зависимости от работающей операционной системы (Windows/Linux)?
Я пытаюсь использовать ocijdbc19 в своем проекте maven. Его можно скачать здесь: https://www.oracle.com/database/technologies/instant-client/downloads.html
И он используется с этим драйвером (работает в Java 11):
com.oracle.ojdbc ojdbc10 19.3.0.0
Не существует ojdbc10 версии 19.6.0.0, поэтому мне пришлось понизить версию ocijdbc19 для соответствия.
Он упакован в виде zip-файла с DLL-файлом. Как мне включить его в свой проект, чтобы он работал в упакованном виде?
UnsatisfiedLinkError: no ocijdbc19 in java.library.path
В java.library.path включает рабочий каталог ./ но именно там находится помпон.
Я пробовал добавить опцию JVM -Djava.library.path=».\lib» , но затем это полностью переопределяет исходное значение, и я получаю эту ошибку:
lib\ocijdbc19.dll: Can't find dependent libraries
Другая проблема заключается в том, что я разрабатываю на машине Windows, но этот проект будет развернут на машине linux. Существуют отдельные версии ocijdbc19 для разных ОС. Конфигурация Maven должна переключаться между каждым пакетом.
Блог
Ошибка Oracle — сбой: нет ocijdbc19 в java.library.path
#jdbc #oracle-sqldeveloper #java.library.path
#jdbc #oracle-sqldeveloper #java.library.path
Вопрос:
У меня компьютер со многими подключениями, все работает правильно. Я получил новый компьютер Win 10, я работаю через Cisco Any Connect из дома. Я устанавливаю SQL Developer 20.2 и 19.4 (ту же версию моего старого ПК), я импортирую свои соединения (около 15), только 2 соединения отправляют мне «Успех» во время теста, все остальные выдают мне эту ошибку:
Сбой: нет ocijdbc19 в java.library.path
Я также устанавливаю PostgreSQL jdbc, и сервер подключен правильно. Разница между двумя ПК заключается в том, что на моем старом ПК я также установил XE и некоторые драйверы odbc для использования с другими продуктами.
Комментарии:
1. что-то с вашим соединением настроено так, чтобы требовать клиента Oracle — отсюда и сообщение ocijdbc19. Покажите нам свои свойства подключения / убедитесь, что у вас не включен параметр «Использовать OCI» в дополнительных настройках, или установите клиент 19c и настройте параметры соответствующим образом.
2. Действительно. Настройка, должно быть, случайно или намеренно пытается использовать драйвер OCI. Почти нет веских причин делать это с приложением Java, хотя, возможно, это было еще во времена Oracle 9i. Если вы используете ojdbcXXX.jar Драйвер Java, обычно он не будет пытаться загрузить драйвер OCI.
3. Привет, Джефф и Кевин, ИТ-отдел не записывает моего пользователя / новый КОМПЬЮТЕР в группу, которая может использовать серверы, только эту глупость. Спасибо за помощь.