簡體   English   中英

為什么我的 Java / Oracle 11g 線程應用程序失敗?

[英]Why does my Java / Oracle 11g threaded application fail?

I have a Windows desktop Java application that was created in Eclipse using Java 1.5 JRE as the compiler and Oracle OCI drivers to communicate with multiple databases simultaneously. 我的系統正在運行 Oracle 11g 客戶端。 我還是 Java 的新手,因此,我最近了解到在 %JAVA_HOME%\lib\ext 路徑上安裝必要的 Oracle OCI 驅動程序不是最佳做法。 我的程序運行正常,直到我從 %JAVA_HOME%\lib\ext 文件夾中刪除 ojdbc5.jar 驅動程序。

現在,盡管在 Eclipse 的項目中將 ojdbc5.jar 添加到我的構建路徑中,但我的應用程序錯誤並顯示以下消息:

Exception in thread "pool-1-thread-1" java.lang.UnsatisfiedLinkError: t2cCreateState at oracle.jdbc.driver.T2CConnection.t2cCreateState(Native Method) at oracle.jdbc.driver.T2CConnection.logon(T2CConnection.java:338) at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:490) at oracle.jdbc.driver.T2CConnection.(T2CConnection.java:133) at oracle.jdbc.driver.T2CDriverExtension.getConnection(T2CDriverExtension.java:53) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.Z93F725A07423F E1C889F448B33D21F46Z:465) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at pkgPasswordChamp.Password_Champ.getConnection(Password_Champ.java:555) at pkgPasswordChamp.Password_Champ.executeStatement(Password_Champ. java:635) at pkgPasswordChamp.Password_Champ.loginToMarket(Password_Champ.java:678) at pkgPasswordChamp.Password_Champ.access$0(Password_Champ.java:663) at pkgPasswordChamp.Password_Champ$currentMarket.run(Password_Champ.java:753) at java.util .concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at Z93F725A074 23FE1C889F448B33D21F46Z.lang.Thread.run(未知來源)

為了解決這個問題,到目前為止,我已經嘗試修改我的 Windows XP 路徑系統變量和我的 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\classes;%ORACLE_HOME%\jdbc\lib\ojdbc5.jar;.

其他論壇建議 java.lang.UnsatisfiedLinkError: t2cCreateState 錯誤意味着缺少與 Z30162ED78B6C10F731411F2FC440C24F 驅動程序關聯的 DLL。 我試圖將 oci.dll 和 ocijdbc11.dll 文件添加到 Eclipse 的構建路徑中,但我仍然收到相同的錯誤。

誰能解釋為什么拋出“java.lang.UnsatisfiedLinkError:t2cCreateState”以及我可以采取哪些步驟來解決錯誤?

對我來說,為什么應用程序在 %JAVA_HOME%\lib\ext 文件夾中使用 ojdbc5.jar 可以正常工作,但在 ojdbc5.jar 被刪除並放置在應用程序的構建路徑上時會失敗,這對我來說是個謎。 對這個新手的任何幫助將不勝感激!

“如果 Java 虛擬機找不到聲明為本地的方法的適當本地語言定義,則拋出此錯誤。”

我不確定為什么移動 Jar 會使其工作/不工作,但這與 Java 不再能夠找到 Oracle 客戶端安裝和它有關嗎?

嘗試將所需的 DLL 復制到運行 Java 的文件夾中,或者將 Oracle 客戶端安裝目錄添加到類路徑?

(ps - 如果您使用多個數據庫,您可能會遇到沒有事務管理器來處理兩個階段提交的問題 - 請注意您不會在數據庫之間獲得不一致的數據!)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM