赞
踩
最近在配置 Mybatis 时,使用外部 properties 文件配置数据库信息时出现异常:java.net.MalformedURLException。网上查来好久才解决掉,这里记录一下。
异常代码如下:
- Caused by: java.net.MalformedURLException: no protocol: mysqlDb.properties
- at java.net.URL.<init>(URL.java:610)
- at java.net.URL.<init>(URL.java:507)
- at java.net.URL.<init>(URL.java:456)
- at org.apache.ibatis.io.Resources.getUrlAsStream(Resources.java:216)
- at org.apache.ibatis.io.Resources.getUrlAsProperties(Resources.java:247)
- at org.apache.ibatis.builder.xml.XMLConfigBuilder.propertiesElement(XMLConfigBuilder.java:233)
- at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:106)
- ... 32 more
properties文件如下:
- driver=com.mysql.cj.jdbc.Driver
- url=jdbc:mysql://localhost:3306/hukan?useSSL=true&useUnicode=true&characterEncoding=UTF-8
- username=root
- password=123456
mybatis-config.xml 文件如下:
- <?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 url="mysqlDb.properties"/>
- <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="mapper/UserMapper.xml"/>
- </mappers>
- </configuration>
在网上查了很久,主要有两个解决方法:
1、
url=jdbc:mysql://localhost:3306/hukan?useSSL=true&useUnicode=true&characterEncoding=UTF-8
url 地址配置错误,因为可能是直接从字符串复制的,使用了转义字符,所以出现错误。只要把 & 改成 & 即可解决。
但这并没有解决我的问题……
2、properties 文件的编码错误,使用的默认编码不是 utf-8。修改文件编码即可解决。然而这也不是引起我程序异常的原因……
正在我一筹莫展的时候,我想到了MyBatis中文官网 ,进入网站我找了配置文件示例
- <properties resource="org/mybatis/example/config.properties">
- <property name="username" value="dev_user"/>
- <property name="password" value="F2Fa3!33TYyg"/>
- </properties>
看到这里我拍了拍我的脑袋,终于解决了我的问题。
因为我引入数据库配置文件竟然使用的 url……
<properties url="mysqlDb.properties"/>
当我改成
<properties resource="mysqlDb.properties"/>
程序终于可以正常运行了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。