我正在尝试在JSF应用程序中使用java.sql.DriverManager连接到Oracle数据库。我正在使用带有vjdbc5.jar的Tomcat v7。
我有一个非常简单的示例项目,除了这段Java代码外,其他什么都没有:
String url = "jdbc:oracle:thin:@DBSERV:DBPORT:DBSID";
String user = "account_admin";
String password = "my_assword";
Connection connection = null;
try {
Class.forName("oracle.jdbc.OracleDriver");
connection = DriverManager.getConnection(url, user, password);
connection.close();
} catch ..
...
执行我得到以下错误:
java.lang.NoClassDefFoundError: Could not initialize class oracle.jdbc.driver.OracleDriver
实际上,已弃用了在其中指定的类“ oracle.jdbc.driver.OracleDriver” ...并且我无法更改Tomcat配置。因此,我指定了“ oracle.jdbc.OracleDriver”,它可以正常加载。
因此,问题是:尽管我要加载另一个错误的驱动程序,为什么DriverManager仍尝试加载“错误的” oracle驱动程序?
我还尝试了以下方法作为Class.forName的替代方法:
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
但这并没有改变任何东西。我还通过以下方式检查了已注册的驱动程序:
Enumeration<Driver> driverList = DriverManager.getDrivers();
while(driverList.hasMoreElements()){
Driver driver = driverList.nextElement();
System.out.println(driver.getClass().toString());
}
输出:
class sun.jdbc.odbc.JdbcOdbcDriver
class oracle.jdbc.OracleDriver
因此,所需的驱动程序似乎已注册,没有任何痕迹,已弃用的“ oracle.jdbc.driver.OracleDriver”。
感谢您的任何帮助
重新启动容器后,我的问题就消失了。我无法解释为什么会这样。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句