编译环境:JDK11、Mysql-8.0.20、IDEA-2020
1、关于main的问题
[Error]:Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.0.0:exec (default-cli) on project spring-10-mybatis: Command execution failed.
我在编译时出现了上面的问题,经过盘查,发现代码没有问题,所以我查找了无数博客后得出的结论是:IDEA2020版本不兼容问题造成的,使用junit4中的Test可破!或是更换低版本的IDEA!
junit4的依赖是:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
2、使用Test之后出现的问题
将main方法换成Test方法后(junit的jar包的依赖已经正确的在pom文件中写上,也成功的导入了junit包),出现了【错误: 找不到或无法加载主类】:
在pom文件中导入依赖即可:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.2</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
3、程序包不存在的问题
为了简化代码,在设计类时使用了@Data,注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。所以需要导入lombok的包
依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
而在进行编译时出现了以下问题:
Error:(3, 14) java: 程序包lombok不存在
Error:(5, 2) java: 找不到符号
符号: 类 Data
解决方法:
点击File
在上述图片的位置中,勾选Delegate…的选项,重新编译即可成功!!!
如果还是不成功,可以尝试搜索Lombok插件点击install安装重启后即可:
4、编译测试时出现查找不到xml文件
Caused by: java.io.FileNotFoundException: class path resource [spring-dao.xml]
网上的大多数博客都不靠谱,找了许久我发现
在target下的classes包中,原来是没有xml文件,我想这可能就是导致其编译时报找不到xml文件的错误的原因!
而我在其中却能找到Java包下的类:
我查看了pomxml文件,发现我配置了Maven静态资源过滤问题!
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
所以我就突然有印象看过关于resource的静态资源过滤配置,所以我增加了以下配置:
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
成功解决问题!
5、获取JDBC连接失败
在解决了上述问题后,编译时又出现了以下问题:
### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
经过搜索后发现,原因是mysql-connector-java的版本过低,导致不兼容的问题!
我的Mysql版本是8.0.20,而mysql-connector-java的版本是5.1.47,只需要将以下mysql-connector-java的版本改到最新的就稳妥了!
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
数据成功查出!
6、警告问题
数据是成功查出来了,但是出现了警告:
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
稍微有点强迫症的我,决定把他解决掉!!!
根据提示,spring-dao.xml文件中的【com.mysql.jdbc.Driver】已经被弃用,所以改成【com.mysql.cj.jdbc.Driver】如下所示,警告成功被KO!
还有一点就是新版的mysql需要把【serverTimezone=UTC】这句加上,不然就会报有关时区的错误!!!
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value=" com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useSSL=true&useUnicode=true&characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
以上为本人在一个程序中遇到的坑,希望能帮到每一个来到这里的你🌷