使用Maven和Mybatis开发时,遇到“java.sql.SQLException: No suitable driver found for http://maven.apache.org”
来源:互联网 发布:新浪微博刷活粉丝软件 编辑:程序博客网 时间:2024/06/05 16:24
今天使用Maven和Mybatis,在Eclipse上开发j2ee的程序。本人刚学Mybatis,对Maven还算熟悉,看过书,用的时间不长。本想试下Mybatis的selectList,结果程序编译通过,运行时报错:
org.apache.ibatis.exceptions.PersistenceException: ### Error opening session. Cause: java.sql.SQLException: No suitable driver found for http://maven.apache.org### Cause: java.sql.SQLException: No suitable driver found for http://maven.apache.orgat org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:8)at org.apache.ibatis.session.defaults.DefaultSqlSessionFactory.openSessionFromDataSource(DefaultSqlSessionFactory.java:83)at org.apache.ibatis.session.defaults.DefaultSqlSessionFactory.openSession(DefaultSqlSessionFactory.java:32)at databaseAdapter.CollegeAdapter.selectCollege(CollegeAdapter.java:28)at temp.RunSqlSession.main(RunSqlSession.java:30)Caused by: java.sql.SQLException: No suitable driver found for http://maven.apache.orgat java.sql.DriverManager.getConnection(DriverManager.java:602)at java.sql.DriverManager.getConnection(DriverManager.java:185)at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.getConnection(UnpooledDataSource.java:64)at org.apache.ibatis.datasource.pooled.PooledDataSource.popConnection(PooledDataSource.java:349)at org.apache.ibatis.datasource.pooled.PooledDataSource.getConnection(PooledDataSource.java:55)at org.apache.ibatis.session.defaults.DefaultSqlSessionFactory.openSessionFromDataSource(DefaultSqlSessionFactory.java:73)... 3 more
郁闷!
之前见过SQLException报错,说ClassNotFound的或者链接打不开的,可就是没见过
java.sql.SQLException: No suitable driver found for http://maven.apache.org
的,我重新把java代码看了一遍,并没有在java代码中发现http://maven.apache.org,使用Maven的mvn clean compile一遍,发现问题依旧,猛然心想,去target里看看Mybatis的configuration配置文件吧,结果找到原因了!
我的Mybatis的配置文件源码如下:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><properties> <property name="url" value="jdbc:postgresql://localhost/mydb3"/> <property name="driver" value="org.postgresql.Driver"/> <property name="username" value="1234"/> <property name="password" value="1234"/></properties><typeAliases><typeAlias alias="College" type="pojo.College"/></typeAliases><environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment></environments><mappers> <mapper resource="mybatis/mapper/CollegeMapper.xml"/></mappers></configuration>
可经过Maven的mvn compile之后,变成了:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><properties> <property name="url" value="jdbc:postgresql://localhost/mydb3"/> <property name="driver" value="org.postgresql.Driver"/> <property name="username" value="1234"/> <property name="password" value="1234"/></properties><typeAliases><typeAlias alias="College" type="pojo.College"/></typeAliases><environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="http://maven.apache.org"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment></environments><mappers> <mapper resource="mybatis/mapper/CollegeMapper.xml"/></mappers></configuration>
发现问题了吧?
是的,maven把Mybatis的${url}替换成http://maven.apache.org了!
为什么呢?
在maven的compile之前,有一个阶段(phase)是process-resources,这时resources插件会把src/main/resources里的xml用到的${XXX}变量替换成设定的值,而url值碰巧在项目pom文件中定义了:
<modelVersion>4.0.0</modelVersion><groupId>cn.edu.sdu.ise.leesonlog.lms4g</groupId><artifactId>lms4g-website</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name>lms4g-website Maven Webapp</name><url>http://maven.apache.org</url>
又碰巧,我把Mybatis的配置文件放到src/main/resouces目录底下了……然后悲剧就发生了。
如何解决:
不让maven过滤resources目录下的Mybatis配置文件,及其mapper文件!
修改工程的POM文件:
<resources><!-- 对resources目录进行过滤,主要是设置bin目录里的内容 --><resource><directory>${project.basedir}/src/main/resources</directory><filtering>true</filtering><excludes><exclude>mybatis/**/*</exclude></excludes></resource><!-- 不过滤resources/mybatis目录,否则容易破坏mybatis的一些xml配置 --><resource><directory>${project.basedir}/src/main/resources</directory><filtering>false</filtering><includes><include>mybatis/**/*</include></includes></resource></resources>
让maven不过滤mybatis文件夹下的东西就可以了。
注意:我的mybatis的配置文件被我放到src/main/resouces/mybatis文件夹下了。
- 使用Maven和Mybatis开发时,遇到“java.sql.SQLException: No suitable driver found for http://maven.apache.org”
- java.sql.SQLException: No suitable driver found for url
- java.sql.SQLException: No suitable driver found for
- java.sql.SQLException: No suitable driver found for jdbc:derby
- java.sql.SQLException: No suitable driver found for jdbc:mysql
- java.sql.SQLException: No suitable driver found for jdbc:mysql
- maven项目java.sql.SQLException: No suitable driver解决
- java.sql.SQLException:No suitable driver found for http://localhost:3306/school
- 数据库连接时一个异常的处理:java.sql.SQLException: No suitable driver found for
- neo4j Caused by:java.sql.SQLException:No suitable driver found for jdbc:neo4j:http:/127.0.0.1:7474/
- 发现造成java.sql.SQLException: No suitable driver found for proxool.test的原因
- java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver://127.0.0.1:1433;解决
- java.sql.SQLException:No suitable driver found for "jdbc:oracle:thin:@
- mondrian java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/foodmart
- Jmeter java.sql.SQLException: No suitable driver found for jdbc:mysql:
- java.sql.SQLException: No suitable driver found for jdbc:mysql:/localhost/XXX?还是没有解决
- Hibernate插件出现错误 java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver
- java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/airline
- Android NDK的入门学习过程
- linux下的IPC机制之共享内存
- 内核的Makefile
- SQL字符类型小结
- javascript的复习
- 使用Maven和Mybatis开发时,遇到“java.sql.SQLException: No suitable driver found for http://maven.apache.org”
- 一线网页游戏程序员日志 (二)
- 什么是 "asmlinkage"?
- linux kernel入门
- 在Mac OS X中配置Apache + PHP + MySQL
- 进制转换(二)(2012.2.20)通用版本(十进制转换二、八、十六进制)
- java面试总结1
- 计算机专业课程体系介绍(含学习顺序)
- gcc对标准C/C++语言的扩展