繁体   English   中英

无法通过瘦连接Oracle 11g

[英]Unable to connect Oracle 11g via thin

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

但是当我在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)

由于您的独立程序运行正常,这意味着您的程序运行时类路径正常。 但是对于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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM