前言
从Github上找了一个SpringMVC+Mybatis+Maven的Demo,想从实例入手,学习Spring和Mybatis的相关知识,Demo是16年的,里面依赖的Jar包版本有些旧了,此外Demo作者不够严谨,代码本身也存在一些问题,因此耗费了一些时间。
正文
Demo从链接:springmvc-mybatis-maven 获取。
错误一:
关键报错信息:Java class file version that isn't supported yet
这是在工程启动时遇到的问题,很快就找到的原因,对于1.8版本的jdk,适配的Spring框架是Spring4.x以上版本,Demo中的Spring版本是3.2.3.RELEASE。修改Maven的pom.xml配置后,需要刷新IDEA的cache,操作为:File -> Invalid caches/Restart..
错误二:
执行mvn package
打包命令,日志中报没有测试用例,在单元测试中添加一条永远为真的测试用例即可解决此问题:
@Test
public void testPasses() {
assertTrue(true);
}
错误三:
报ClassNotFoundException,MappingJacksonHttpMessageConverter类找不到,原因是这个类在Spring4.x中被改名为了MappingJackson2HttpMessageConverter,修改名称即可:
- spring3.x: org.springframework.http.converter.json.MappingJacksonHttpMessageConverter
- spring4.x: org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
错误四:
关键报错信息:java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingException
这也是Jar包不匹配,Spring升级到4.x之后,需要对Json库进行升级,可行的操作参考:链接错误五:
新安装的mysql服务版本为8.0.19,JDBC连接一直建立失败,报错信息:Could not get JDBC Connection
,需要更新mysql-connector-java
依赖的版本,从5.x.x到8.x.x:
修改之后出现如下报错:<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents
解决方法是在jdbc的url连接中指定timezone,解决方法见:链接错误六:
关键报错信息:Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: freemarker.template.Configuration.
原因是spring升级之后,freemarker的版本依赖不匹配,修改方法为更新freemarker版本,从2.3.20到2.3.28:<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
修改后的工程
在公司写的,不敢上传代码!!!