今天在使用Idea跑代码时突然出现了下面错误,因为代码中使用了jdk 1.8功能:
开始以为是我的模块语言级别设置小于1.8,于是在project structure中将jdk设置为1.8,如下:
同时将project sdk设置为1.8。
但是设置完后重新运行发现还是上面错误,同时发现target/classes目录下没有编译后的class文件。仔细看上面错误可以发现,Idea的javac能正常编译,maven构建时编译出错了,那这里大概可以确定是maven出错了。后来想到我在project structure设置language level时,窗口下方提醒如下:
这里可以看出,Idea对构建的构建也是依赖当前使用构建工具Maven,如果Maven中配置了编译器版本,Idea也会随之变化。
解决办法
在pom.xml
中配置maven-compiler-plugin
如下:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
重新编译就会发现target/classes目录下class文件一切正常,项目也能正常运行了!