【问题标题】:Spring and OJDBC driverSpring 和 JDBC 驱动程序
【发布时间】:2016-10-21 10:34:19
【问题描述】:

我在 ojdbc7.jar 上运行了“mvn install...”,将其作为依赖项添加到 maven 项目中,编写了一个连接到数据库的函数,对其进行了测试,并且成功了。

我打开了一个新的 spring mvc 项目,将上述项目添加为 maven 依赖项以及“部署程序集”,并调用了我编写的连接到数据库的函数。

当我在我的关键 tc 服务器(eclipse 内置服务器)中运行它时,一切正常,直到它到达另一个项目中尝试连接到数据库的行,此时它抛出:

HTTP Status 500 - Request processing failed; nested exception is java.sql.SQLException: No suitable driver found for <the url of my database>

这意味着它没有在我的 ojdbc7.jar 中搜索驱动程序,即使将其作为 maven 依赖项添加到我的 spring 项目也没有帮助。

我确实在target\buildcenter-1.0.0-BUILD-SNAPSHOT\WEB-INF\lib 中看到了ojdbc7 jar,所以它在编译时添加了它,但仍然找不到驱动程序,所以必须有一些配置问题。

知道如何解决这个问题吗?

【问题讨论】:

    标签: java eclipse spring maven ojdbc


    【解决方案1】:

    发现问题了!我希望它会帮助别人:

    在我的常规 maven 项目中,我使用了

    DriverManager.getConnection(connectionString, connectionProps);
    

    这个 java.sql.DriverManager 类有一个加载 ojdbc 驱动程序的静态初始化,由于一些未知的原因,当我将它作为 java 应用程序运行时它可以工作,但当我在 spring 中运行它时却没有(如果有人猜到为什么请让我知道)。

    解决办法是自己加载驱动:

    Class.forName("oracle.jdbc.driver.OracleDriver");
    

    【讨论】:

    • 如果驱动程序是 Web 应用程序部署的一部分,而不是 tomcat/应用程序服务器/等,则不会加载它。 DriverManager 仅加载全局系统类加载器上可用的驱动程序,而不加载已部署 Web 应用程序的上下文类加载器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-28
    • 2019-11-23
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多