JDBC驱动管理器试图使用非指定的Oracle驱动程序



我试图在JSF应用程序中使用java.sql.DriverManager连接到Oracle数据库。我使用的是带有ojdbc5.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的替代品。

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"的痕迹。

感谢您的帮助

当我重新启动容器时,我的问题消失了。我无法解释为什么会这样。

相关内容

  • 没有找到相关文章

最新更新