#java #oracle #jdbc #drivers
Вопрос:
Я запускаю серию юнитов с использованием Apache ANT с использованием JDK 1.5.
Все юниты, использующие драйвер Oracle JDBC, выдают ошибку unsatisfiedlink, показанную ниже.
Какую родную библиотеку он ищет и как мне это решить? Что должна содержать переменная PATH?
java.lang.UnsatisfiedLinkError: oracle/jdbc/driver/T2CConnection.t2cGetCharSet([CI[CI[CI[CII[SLoracle/jdbc/driver/GetCharSetError;)S
at oracle.jdbc.driver.T2CConnection.getCharSetIds(T2CConnection.java:2957)
at oracle.jdbc.driver.T2CConnection.logon(T2CConnection.java:320)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:361)
at oracle.jdbc.driver.T2CConnection.<init>(T2CConnection.java:142)
at oracle.jdbc.driver.T2CDriverExtension.getConnection(T2CDriverExtension.java:79)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:595)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:196)
at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPhysicalConnection(OracleConnectionPoolDataSource.java:114)
at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPooledConnection(OracleConnectionPoolDataSource.java:77)
at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPooledConnection(OracleConnectionPoolDataSource.java:59)
at oracle.jdbc.pool.OracleConnectionCacheImpl.getNewPoolOrXAConnection(OracleConnectionCacheImpl.java:401)
at oracle.jdbc.pool.OracleConnectionCacheImpl.setMinLimit(OracleConnectionCacheImpl.java:752)
Комментарии:
1. Какая это версия драйвера Oracle JDBC? Так ли это classes12.zip, или ojdbc14.jar, или совсем другой?
Ответ №1:
Решено!
На самом деле это было устаревшее ojdbc14.jar файл, вызывающий эту проблему. Все, что я сделал, это обновил его, и теперь проблема устранена. Файл классов
Спасибо
Ответ №2:
Было это, вы должны добавить classes12.jar или classes13.jar к вашему пути к классу (не уверен в названии, прошло больше года, погуглите эти…)
Ответ №3:
«Выбрасывается, если виртуальная машина Java не может найти соответствующее определение на родном языке метода, объявленного родным».
Означает, что он ищет DLL/так что-вы, вероятно, используете ТОЛСТЫЙ драйвер ? Драйвер JDBC 2 ?
Если да, то вы, возможно, захотите добавить OCI.DLL и т.д.
Комментарии:
1. Вы указываете JRE, где найти библиотеку DLL с-Djava.library.path
Ответ №4:
Вам нужно передать-Djava.library.path=YOUR_ORACLE_HOMEbin в JRE в качестве параметра времени выполнения
Так….
java [other java switches runtime parameters] -Djava.library.path=YOUR_ORACLE_HOMEbin run-classname
Кроме того, убедитесь, что jar в пути к классу такой же, как в файле $ORACLE_HOME/jdbc/lib… при необходимости перезапишите файл Eclipse с помощью Oracle.
Если это не сработает, это поможет узнать, какую версию Oracle вы используете, так как это повлияет на то, следует ли вам использовать classes12.jar или ojdbc14.jar
Ответ №5:
Возникла та же проблема; решена путем изменения URL-адреса подключения с jdbc:oracle:oci:@//localhost:1521/service_name чтобы jdbc:oracle:thin:@//localhost:1521/service_name