【发布时间】:2013-11-05 07:40:50
【问题描述】:
我正在尝试在使用 Tomcat 4 服务器的 Web 应用程序中通过下面的 java 代码连接到 Oracle 11g DB。 ojdbc6.jar 在 Eclipse 构建路径中,但在错误之下得到了这个。
但是当我在 Java 文件 (public static void main()) 中尝试这段相同的 Java 代码并在 Eclipse 构建路径中有 ojdbc6.jar 时,它能够连接到 d DB,非常奇怪! 那为什么同样的代码在我的 Web 应用程序中不起作用??
服务器:Tomacat 4
JDK 版本:JDK 1.6
Java 代码:
Class.forName("oracle.jdbc.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@hostName:portNum:SID","user", "pass");
在下面得到这个错误:
java.lang.ArrayIndexOutOfBoundsException: 7
at oracle.security.o3logon.C0.r(C0)
at oracle.security.o3logon.C0.l(C0)
at oracle.security.o3logon.C1.c(C1)
at oracle.security.o3logon.O3LoginClientHelper.getEPasswd(O3LoginClientHelper)
at oracle.jdbc.ttc7.O3log.<init>(O3log.java:289)
at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:251)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:246)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:365)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:260)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
【问题讨论】:
-
您能否编辑您的问题并提供您的 Java 代码?否则我们将无法为您提供帮助。我看到您已将
DB schema name放入您的数据库 URL 中 - 您放在那里的是什么?它应该是数据库 SID,而不是模式名称。 -
在 Eclipse 构建路径中是否有所有这些 Oracle jar,或者只有其中一个? ojdbc6.jar 是正确的使用 - 您是否尝试删除其他两个并只使用那个? TTC7Protocol 的东西似乎是特定于 ojdbc14.jar(所以说findjar),它不在我拥有的 ojdbc5.jar 和 ojdbc6.jar 的副本中。
-
我用更多信息更新了问题。请看一下。 @PrzemyslawKruglej:我已经提供了 2 行 Java 代码,只是想将数据库与加载驱动程序连接起来。是的,这就是 DB SID 名称。 Luke:我的 Eclipse 构建路径中只有 ojdbc6.jar。但仍然遇到这个问题。在路径中只有 ojdbc6.jar 的独立 Java 文件上工作的代码,但在 Web 应用程序中,除了 ojdbc6.jar 之外,还有其他 jar(如 spring、Apache commons jar 等)。可能是其他导致问题的罐子?请指教。