最近在重新整理学习SSM框架的搭建,在准备代码生成器的时候发现了一个让我头疼的问题,代码生成器是用的mybatis-plus-generator在写生成器代码我从公司的项目把我之前给公司项目整的生成器代码拿过来用结果竟然报错了!如下图:

代码报错提示
代码报错提示

我大致查了一下: https://www.zhihu.com/question/40471754

在这个问题下提到的一个 https://stackoverflow.com/questions/20938095/difference-between-final-and-effectively-final

在Java8 被捕获的局部变量不必定义成final的,但实际上还是final的。

那我就纳闷了,我的项目明明是Java8啊,为啥还会有这个问题?

项目JDK设置
项目JDK设置

但其实不仅仅只有上面的有涉及到JDK版本问题还有以下两处:

Modules.png
Modules.png

settings.png
settings.png

以上这两个地方他是默认是JDK1.5,所以当我知道了这几个地方会有影响,我便修改了这两处,确实立马见效,不再报错,但是另一个问题就来了,我一点reimport maven就直接又恢复了1.5。

解决办法:

pom.xml的插件部分加上指定版本

                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>

这时候我们再去reimport一下maven就发现,这个报错提示消失了!