Почему мой многопоточный Java / Oracle 11g отказывает? - PullRequest
0 голосов
/ 09 июля 2011

У меня есть настольное Java-приложение Windows, которое было создано в Eclipse с использованием Java 1.5 JRE в качестве компилятора и драйверов Oracle OCI для одновременного взаимодействия с несколькими базами данных. Моя система работает под управлением клиента Oracle 11g. Я новичок в Java, поэтому недавно узнал, что не рекомендуется устанавливать необходимые драйверы Oracle OCI по пути% JAVA_HOME% \ lib \ ext. Моя программа работала правильно до того дня, когда я удалил драйвер ojdbc5.jar из папки% JAVA_HOME% \ lib \ ext.

Теперь, несмотря на добавление ojdbc5.jar к моему пути сборки в проекте в Eclipse, мое приложение выдает следующее сообщение:

Исключительная ситуация в потоке "pool-1-thread-1" java.lang.UnsatisfiedLinkError: t2cCreateState в oracle.jdbc.driver.T2CConnection.t2cCreateState (собственный метод) в oracle.jdbc.driver.T2CConnection.logon (T2CConnection.java:338) в oracle.jdbc.driver.PhysicalConnection. (PhysicalConnection.java:490) в oracle.jdbc.driver.T2CConnection. (T2CConnection.java:133) в oracle.jdbc.driver.T2CDriverExtension.getConnection (T2CDriverExtension.java:53) в oracle.jdbc.driver.OracleDriver.connect (OracleDriver.java:465) в java.sql.DriverManager.getConnection (Неизвестный источник) в java.sql.DriverManager.getConnection (Неизвестный источник) в pkgPasswordChamp.Password_Champ.getConnection (Password_Champ.java:555) в pkgPasswordChamp.Password_Champ.executeStatement (Password_Champ.java:635) в pkgPasswordChamp.Password_Champ.loginToMarket (Password_Champ.java:678) в pkgPasswordChamp.Password_Champ.access $ 0 (Password_Champ.java:663) в pkgPasswordChamp.Password_Champ $ currentMarket.run (Password_Champ.java:753) в java.util.concurrent.ThreadPoolExecutor $ Worker.runTask (Неизвестный источник) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (неизвестный источник) at java.lang.Thread.run (неизвестный источник)

До сих пор я пытался изменить системную переменную пути Windows XP и системную переменную Classpath Windows XP. Кажется, что каждая переменная содержит ссылку на необходимые папки и файлы.

Путь: C: \ WINDOWS \ system32 \ WindowsPowerShell \ v1.0;% ORACLE_HOME% \ bin;% JAVA_HOME% \ bin;% ORACLE_HOME% \ bin \ ocijdbc11.dll;

Classpath:.; C: \ Program.; C: \ Program Files \ QuickTime \ QTSystem \ QTJava.zip;.;.; C: \ PROGRA ~ 1 \ JMF21 ~ 1.1E \ lib \ sound.jar; C : \ PROGRA ~ 1 \ JMF21 ~ 1.1E \ Lib \ файлу jmf.jar; C: \ PROGRA ~ 1 \ JMF21 ~ 1.1E \ Lib;% SystemRoot% \ Java \ классы;% ORACLE_HOME% \ JDBC \ Lib \ ojdbc5.jar ;.

Другие форумы считают, что ошибка java.lang.UnsatisfiedLinkError: t2cCreateState означает, что DLL, связанная с драйвером Oracle, отсутствует. Я попытался добавить файлы oci.dll и ocijdbc11.dll в путь сборки в Eclipse, но все еще получал ту же ошибку.

Может кто-нибудь объяснить, почему выдается «java.lang.UnsatisfiedLinkError: t2cCreateState» и какие шаги я могу предпринять, чтобы устранить ошибку?

Для меня загадка, почему приложение работает нормально только с ojdbc5.jar в папке% JAVA_HOME% \ lib \ ext, но завершается ошибкой, когда ojdbc5.jar удаляется и помещается в сборку Путь приложения. Любая помощь для этого новичка будет принята с благодарностью!

1 Ответ

0 голосов
/ 09 июля 2011

"Выдается, если виртуальная машина Java не может найти соответствующее определение на родном языке метода, объявленного собственным."

Я не совсем уверен, почему перемещение Jar заставляет его работать / не работать, но связано ли это с тем, что Java больше не может найти установку Oracle Client и ее DLL?

Попробуйте скопировать необходимые библиотеки DLL в папку, из которой вы запускаете Java, или, возможно, добавьте каталог установки Oracle Client в classpath?

(ps - если вы используете более одной базы данных, у вас могут возникнуть проблемы с отсутствием диспетчера транзакций для обработки двухфазных коммитов - следите, чтобы между базами данных не возникало противоречивых данных!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...