gpt4 book ai didi

java - 无法通过精简连接 Oracle 11g

转载 作者:行者123 更新时间:2023-12-02 06:36:28 25 4
gpt4 key购买 nike

我正在尝试在使用 Tomcat 4 服务器的 Web 应用程序中通过下面的 java 代码连接到 Oracle 11g DB。 ojdbc6.jar 在 Eclipse 构建路径中,但出现以下错误。

但是当我在 Java 文件(public static void main())中尝试这段相同的 Java 代码并且在 Eclipse 构建路径中包含 ojdbc6.jar 时,它能够连接到 d DB,非常奇怪!那么为什么同样的代码在我的网络应用程序中不起作用?

服务器: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)

最佳答案

既然你的独立程序运行正确,这意味着你的程序运行时类路径是好的。然而,对于 Tomcat 4 来说,它的失败引起了人们对 tomcat 类路径的怀疑。我的猜测是,由于您的 tomcat 相当旧,它可能包含旧的驱动程序类(可能是 tomcat 库中的classes12.jar或旧的 ojdbc jar 文件(特别是查看 $CATALINA_HOME/common/lib)。如果是这种情况,请从类路径中删除除 ojbdc6 之外的所有其他 jar。还要确保您的 Web 应用程序库不包含classes12.jar 或较旧的 ojdbc jar。

您还可以尝试在 tomcat jvm 启动中使用 -verbose:class 来打印加载类的信息。然而,这将在日志文件中输出大量信息。搜索驱动程序类,它将显示它是从哪里加载的。

Loaded oracle.jdbc.driver.OracleDriver from file: xxx.jar

关于java - 无法通过精简连接 Oracle 11g,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19602518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com