【问题标题】:java.sql.SQLException: No suitable driver Cannot create JDBC driver of class 'oracle.jdbc.driver.OracleDriver' for connect URLjava.sql.SQLException:没有合适的驱动程序无法为连接 URL 创建类“oracle.jdbc.driver.OracleDriver”的 JDBC 驱动程序
【发布时间】:2016-06-22 07:22:46
【问题描述】:

我正在尝试使用 TNS URL、用户名和密码连接到 Oracle 11i 数据库。 JNDI 正在成功查找数据源,但我无法获取连接。相反,我看到了以下堆栈跟踪。

java.sql.SQLException: No suitable driver
org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2151)
org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2032)
org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1532)
org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:204)
org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373)
org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:427)
org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:276)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
com.sun.proxy.$Proxy30.getOutOfDateSpanishContent(Unknown Source)
com.myproject.cms.tools.controller.OutOfDateSpanishDrcController.downloadDcrReportAsCsv(OutOfDateSpanishDrcController.java:57)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

我的 Maven 设置如下。

    <dependency>
        <groupId>ojdbc</groupId>
        <artifactId>ojdbc</artifactId>
        <version>6</version>
    </dependency>   

我的 Spring MVC 应用程序已部署到 Tomcat 8。我在 $CATALINA_HOME/lib 位置有 oracle jar 文件。我在$CATALINA_HOME/conf/context.xml 中的 JNDI 配置如下所示

<Resource name="jdbc/myDB" auth="Container" type="javax.sql.DataSource" username="username" password="password" driverClassName="oracle.jdbc.driver.OracleDriver" url="Jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<host_name>)(PORT=49125))(CONNECT_DATA=(SERVER=DEDICATED)(service_name=<service_name>)))" maxTotal="10" maxIdle="5"  poolPreparedStatements="true"  validationQuery="select 1" />

我的 web.xml 配置

  <resource-ref>
  <description>
    Resource reference to a factory for java.sql.Connection
    instances that may be used for talking to a particular
    database that is configured in the  configuration for the web application.
  </description>
  <res-ref-name>
    jdbc/myDB
  </res-ref-name>
  <res-type>
    javax.sql.DataSource
  </res-type>
  <res-auth>
    Container
  </res-auth>
</resource-ref>

我不确定我做错了什么。我能够使用 DriverManager API 成功连接。我已阅读以下主题,但我无法弄清楚我做错了什么。我已经尝试了接受的解决方案中的所有建议,但无济于事。

  1. java.sql.SQLException: No suitable driver found jdbc:oracle:thin
  2. java.sql.SQLException: No suitable driver
  3. Cannot create JDBC driver of class '' for connect URL 'null'

【问题讨论】:

    标签: java oracle jdbc jndi tomcat8


    【解决方案1】:

    您的 Maven 设置看起来有问题。请试试这个:

    <dependency>
     <groupId>com.oracle.jdbc</groupId>
     <artifactId>ojdbc6</artifactId>
     <version>11.2.0.4</version>
    </dependency>
    

    更多细节可以在这里找到: https://blogs.oracle.com/dev2dev/entry/oracle_maven_repository_instructions_for

    【讨论】:

      猜你喜欢
      • 2021-08-04
      • 2020-10-29
      • 2012-03-09
      • 2015-04-27
      • 2016-11-28
      • 2011-11-08
      • 2018-01-14
      • 2013-11-16
      • 2011-05-14
      相关资源
      最近更新 更多