對於那些誰願意讀一些連接到Oracle數據庫,(跳到結束對短版):麻煩通過ojdbc
我想我的Java應用程序連接到遠程Oracle數據庫。沒有運氣我正在使用IntelliJ Idea 12的Mac 10.7.5,Java版本「1.6.0_51」64位。我一直試圖整天沒有成功地完成這項工作。我也無法使用IntelliJ中的'DataSource'視圖,因爲缺少java.library.path中的共享dylib。我懷疑這兩個問題是相關的。
我嘗試安裝Oracle即時客戶端64位(包括JDBC文件),複製dylibs到/ usr/lib目錄/ java和這個讓我接近與一個不同的錯誤解決「數據源」的觀點的問題:
java.lang.RuntimeException: java.rmi.UnmarshalException: Error unmarshaling return header; nested exception is:
java.io.EOFException
in RemoteUtil$RemoteInvocationHandler.invoke(RemoteUtil.java:219)
at com.sun.proxy.$Proxy115.connect(Unknown Source)
in LocalDataSource.getConnection(LocalDataSource.java:158)
Caused by: java.rmi.UnmarshalException: Error unmarshaling return header; nested exception is:
java.io.EOFException
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:209)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:178)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:132)
at com.sun.proxy.$Proxy114.connect(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
in RemoteUtil$RemoteInvocationHandler.invoke(RemoteUtil.java:211)
... 21 more
Caused by: java.io.EOFException
at java.io.DataInputStream.readByte(DataInputStream.java:250)
at sun.rmi.transport.StreamRemoteCall.executeCal
因此,繼續旅程,我嘗試使用32位版本的ojdbc .dylibs和.jars,但後來嘗試使用IntelliJ的DataSource視圖連接到Oracle數據庫時遇到了「錯誤的體系結構」。
我想通過使用32位保持一致性,因爲我的大多數應用程序都使用需要32位JVM的庫。
TL;博士的ERS:
-Cannot通過IntelliJ IDEA的12數據源視圖連接Oracle分貝也不通過Java應用程序中使用JDBC
連接-Background信息:Mac OSX上10.7.5,爪哇1.6。 0_51 64位,IntelliJ IDEA的12,遠程Oracle 11G數據庫
-Tried Oracle即時客戶端與JDBC文件32位和64位版本,沒有運氣
任何建議,將不勝感激! 謝謝
附加說明:我無法通過sqlplus連接;我得到錯誤ORA-21561:OID生成失敗。搜索結果只指向修復/ etc/hosts文件,這對我來說沒有任何意義,因爲db服務器位於遠程服務器上,而我使用/etc/tnsnames.ora中的TNS條目進行連接
===更新1 === 我通過java代碼連接取得了一些進展。使用此代碼:
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@hostname:port/service_name", "user", "password");
,但收到的錯誤:
java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection
我可以連接通過Eclipse IDE中卻沒有關於我的Mac筆記本電腦使用這個代碼確切一塊我的工作機器。
您發佈的錯誤似乎與Oracle沒有任何關係。它看起來像你的Oralce部分工作,並在代碼的另一部分發生了完全不同的錯誤。 –
我發佈的錯誤似乎與不穩定的64位ojdbc .dylib文件有關。我想堅持使用32位,但是當我嘗試使用32位ojdbc庫和罐子時,出現錯誤'mach-o,但是錯誤的體系結構' –
嘗試使用jdbc:oracle:thin:@hostname:port:sid或jdbc :oracle:thin:@ // host:port/serviceName並且記得在你的類路徑中只有瘦驅動程序 –