Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection;

这几天在用maven写项目 过程中遇到一个坑 是本人粗心大意了 一直报错No suitable driver 然后就一心去找这个错误 网上找了很多遍 大部分都是说oracle驱动问题 

于是我怀疑是不是我在maven命令中加入oracle驱动出了问题 但事实证明没有错误 (maven命令下面附图)

驱动换了好几个 依然报错 

ojdbc6-11.1.0.6.0这个驱动 会多报一个错 说是这个驱动有bug 升级到ojdbc-11.1.0.7.0就好了 

于是我觉得问题不应该出在驱动上 不可能好几个驱动没有一个不能用的 

所以写了jdbc连接代码做了测试 这一测 给我测的立马给了我自己一巴掌 一直以为是驱动问题 没想到是URL填写错误引发的 标黄部分就是书写错误的代码 把thin写成了then。。。

改过来后立马正常!

以下是异常代码:

Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class 'oracle.jdbc.driver.OracleDriver' for connect URL 'jdbc:oracle:then:localhost:1521:orcl'
### The error may exist in AutomaticAccount.xml
### The error may involve com.assist.dao.IAutomaticAccountDAO.getUser
### The error occurred while executing a query
### Cause:

### The error may exist in AutomaticAccount.xml
### The error may involve com.assist.dao.IAutomaticAccountDAO.getUser
### The error occurred while executing a query
### Cause:
org.springframework.jdbc.CannotGetJdbcConnectionException : Could not get JDBC Connection; nested exception is org.apache.tomcat.dbcp.dbcp.SQLNestedException : Cannot create JDBC driver of class 'oracle.jdbc.driver.OracleDriver' for connect URL 'jdbc:oracle:then:localhost:1521:orcl'] with root cause
java.sql.SQLException : No suitable driver
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(
BasicDataSource.java:1443 )
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(
BasicDataSource.java:1371 )
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(
BasicDataSource.java:1044 )
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(
DataSourceUtils.java:111 )
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(
DataSourceUtils.java:77 )
at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(
SpringManagedTransaction.java:82 )
at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(
SpringManagedTransaction.java:68 )
at org.apache.ibatis.executor.BaseExecutor.getConnection(
BaseExecutor.java:336 )
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(
SimpleExecutor.java:84 )
at org.apache.ibatis.executor.SimpleExecutor.doQuery( SimpleExecutor.java:62 )
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase( BaseExecutor.java:324 )
at org.apache.ibatis.executor.BaseExecutor.query( BaseExecutor.java:156 )
at org.apache.ibatis.executor.CachingExecutor.query( CachingExecutor.java:109 )
at org.apache.ibatis.executor.CachingExecutor.query( CachingExecutor.java:83 )
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList( DefaultSqlSession.java:148 )
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList( DefaultSqlSession.java:141 )
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne( DefaultSqlSession.java:77 )
at sun.reflect.NativeMethodAccessorImpl.invoke0( Native Method )
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke( SqlSessionTemplate.java:433 )
at com.sun.proxy.$Proxy11.selectOne(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectOne( SqlSessionTemplate.java:166 )
at org.apache.ibatis.binding.MapperMethod.execute( MapperMethod.java:82 )
at org.apache.ibatis.binding.MapperProxy.invoke( MapperProxy.java:59 )
at com.sun.proxy.$Proxy12.getUser(Unknown Source)
at com.assist.service.AutomaticAccountService.getUser( AutomaticAccountService.java:36 )
at com.assist.action.AutomaticAccountAction.getUser( AutomaticAccountAction.java:29 )
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke( InvocableHandlerMethod.java:215 )
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest( InvocableHandlerMethod.java:132 )
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle( ServletInvocableHandlerMethod.java:104 )
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod( RequestMappingHandlerAdapter.java:749 )
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal( RequestMappingHandlerAdapter.java:689 )
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle( AbstractHandlerMethodAdapter.java:83 )
at org.springframework.web.servlet.DispatcherServlet.doDispatch( DispatcherServlet.java:938 )
at org.springframework.web.servlet.DispatcherServlet.doService( DispatcherServlet.java:870 )
at org.springframework.web.servlet.FrameworkServlet.processRequest( FrameworkServlet.java:961 )
at org.springframework.web.servlet.FrameworkServlet.doPost( FrameworkServlet.java:863 )
at javax.servlet.http.HttpServlet.service( HttpServlet.java:650 )
at org.springframework.web.servlet.FrameworkServlet.service( FrameworkServlet.java:837 )
at javax.servlet.http.HttpServlet.service( HttpServlet.java:731 )
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:303 )
at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:208 )
at org.apache.tomcat.websocket.server.WsFilter.doFilter( WsFilter.java:52 )
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:241 )
at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:208 )
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal( CharacterEncodingFilter.java:88 )
at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:107 )
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:241 )
at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:208 )
at org.apache.catalina.core.StandardWrapperValve.invoke( StandardWrapperValve.java:218 )
at org.apache.catalina.core.StandardContextValve.invoke( StandardContextValve.java:110 )
at org.apache.catalina.authenticator.AuthenticatorBase.invoke( AuthenticatorBase.java:506 )
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:169 )
at org.apache.catalina.valves.ErrorReportValve.invoke( ErrorReportValve.java:103 )
at org.apache.catalina.valves.AccessLogValve.invoke( AccessLogValve.java:962 )
at org.apache.catalina.core.StandardEngineValve.invoke( StandardEngineValve.java:116 )
at org.apache.catalina.connector.CoyoteAdapter.service( CoyoteAdapter.java:445 )
at org.apache.coyote.http11.AbstractHttp11Processor.process( AbstractHttp11Processor.java:1115 )
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process( AbstractProtocol.java:637 )
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run( JIoEndpoint.java:318 )
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( TaskThread.java:61 )

at java.lang.Thread.run(Unknown Source)

由于oracle是收费的所以oracle的驱动maven中央仓库并没有 我们只能使用命令自己来搞

maven命令导入oracle驱动图:(使用maven命令的前提是电脑中配置了maven环境)

本人oracle11G 32位 11.1.0.6.0是oracle的版本 (因为11.1.0.6.0存在bug所以下图中是11.1.0.7.0版本)

不过我最后用的是ojdbc14-10.2.0.4.0

使用这条sql可以查看自己的oracle版本: select * from v$version

这一步命令就是把ojdbc的驱动包放入本地仓库repository中 完成后在pom.xml中使用下面语句即可成功引用oracle驱动

<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4.0</version>
</dependency>

此时maven库中也有了显示


完成!

猜你喜欢

转载自blog.csdn.net/cm777/article/details/79092081