日常解惑-记录一次maven控制jdk版本问题

前言

新建了一个java项目,然后编写了代码之后,发现了如下的错误:

可以看到它说我用的是jdk5版本,但是我本机上面装的明明是jdk10。上面还说了是因为我的Module设置问题。

于是通过command +;打开了项目设置,发现设置没有问题;然后又去command+,打开了设置,找到了Java compiler,发现了确实用的是java 5在进行编译,当然会出问题了,那解决办法很简单,直接给它改掉就好了。

问题

之后继续编写了一段时间的代码,重新运行,同样的问题又出现了。哎?我明明没改动啊,打开设置,找到Java compiler,发现确实又变回1.5了。

稍微想了想,应该是maven的锅,因为导入过依赖,所以重新引入过maven的pom文件。但是不对啊,我的settings.xml文件里明确指定了jdk的版本是1.8呀,这问题从一开始就不应该出现。我还特意去我的配置文件里确认了一下,确实写了jdk版本为1.8呀。

然后查阅资料发现,可以通过在自己的项目下面运行mvn help:effective-settings来查看激活的settings,我看了一眼里面确实有1.8,也就是这个maven确实用的是带着1.8的配置文件,为什么就是不生效呢?

解决

最后看了很久,发现是我….拼写错了…. 我不甘心,也怕以后还会遇到这种问题,就去网上搜了一下,可能是因为xml文件的缘故,网上居然没有相关的插件来对语法检查?有人知道的话希望告知。

当然如果仅仅是拼写错误,那这个错误就有点没意思了,通过这个错误,还学到不少idea对maven的支持。

在idea下面,只需要右击maven项目下的pom文件,然后就会有一个maven选项,可以提供不少功能:

最后一个选项,就是列出当前项目所启用的设置项,非常的具体好用。

最后就是提供一下编译使用jdk8的配置文件内容,省得以后找来找去:

1
2
3
4
5
6
7
8
9
10
11
12
13
<profiles>
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
</profile>
</profiles>