对于那些愿意阅读的人,(跳到最后的简短版本):
我正在尝试将我的Java应用程序连接到远程oracle数据库。没有运气我使用Mac 10.7.5与IntelliJ Idea 12,Java版“1.6.0_51”64位。我一直在努力让这项工作整天都没有成功。由于java.library.path中缺少共享的dylib,我也无法在IntelliJ中使用“DataSource”视图。我怀疑这两个问题是相关的。
我尝试安装64位的Oracle Instant Client(包括jdbc文件),将dylib复制到/ usr / lib / java,这让我接近解决“DataSource”视图问题时出现了不同的错误:
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 db时,我遇到了“错误的架构”。
我想通过使用32位来保持一致,因为我的大多数应用都使用需要32位JVM的库。
tl; dr'rs:
- 不能通过IntelliJ Idea 12 DataSource视图连接到oracle db,也不能使用JDBC通过java app连接
-BackGround Info:Mac OSX 10.7.5,Java 1.6.0_51 64位,IntelliJ Idea 12,远程Oracle 11G DB
- 用带有jdbc文件的32位和64位版本的Oracle Instant Client,没有运气
任何建议都将不胜感激! 谢谢
附加说明:我也无法通过sqlplus连接;我收到错误ORA-21561:OID生成失败。搜索结果只指向修复/ etc / hosts文件,这对我来说没有意义,因为数据库服务器在远程服务器上并且我使用/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笔记本电脑上连接。
答案 0 :(得分:0)
我只能鼓励你使用oracle thin jdbc客户端。必须有一个非常具体的理由不这样做。有了这个,你可能没有任何问题。
答案 1 :(得分:0)
对于通过TNS获得的Intellij / DataGrip 2018 DB连接
const {nativeImage} = require('electron');
// ...
let touchBarIcon = new TouchBarButton({
'backgroundColor': '#000000',
'icon': nativeImage.createFromPath(path.join(__dirname, 'build/18x18@2x.png')).resize({
width: 16,
height: 16,
}),
'iconPosition': 'center',
});
我在Oracle驱动程序版本11.2.0.4中发现了问题
我使用版本 12.1.0.2
获得“测试连接>成功”