Java异常 #IntelliJ IDEA改了项目的Target bytecode version

1.问题现象

用 Intellij IDEA 新建 Java 项目,使用 JDK1.8,设置 Target bytecode version 为 1.8,Language level 为 1.8。但是,每新加一个模块,刚才设置的 Target bytecode version 又全部都变成了 1.5。

再次把 Java Compiler 的 Target bytecode version 或者把 Project Settrings 的 Target bytecode version 设置成 1.8。过了一会儿又会提示 1.5。

Java异常 #IntelliJ IDEA改了项目的Target bytecode version_第1张图片

 

2.排查分析

Maven 是个项目管理工具,如果我们不告诉它我们的代码要使用什么样的 jdk 版本编译的话,它就会用 maven-compiler-plugin 默认的 jdk 版本来进行处理,这样就容易出现版本不匹配的问题。例如代码中要是使用上了 jdk1.8 的新特性,但是 maven 在编译的时候使用的是 jdk1.6 的版本,那这一段代码是完全不可能编译成 .class 文件。

为什么会这样呢?

编译器插件用于编译项目的源代码。从 3.0 开始,默认编译器是 javax.tools.JavaCompiler(如果使用的是Java 1.6),并且用于编译 Java 源代码。如果你想强制插件使用 javac,你必须配置插件选项 forceJavacCompilerUse。
还要注意,目前默认的源代码设置是 1.5,默认的目标设置是 1.5,与运行 Maven 的 JDK 无关。如果要更改这些默认值,则应按照设置 Java 编译器的 -source 和 -target 中所述设置源和目标。 

 

3.解决方案

3.1. 项目最外层的 pom.xml 配置文件中添加以下配置: 

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.1
                
                    
                    
                    1.8
                    
                    1.8
                
            
        
    

3.2. 或者检查一下 maven 安装目录下的 \maven\conf\settings.xml 文件,看看 maven.compiler.source 设置的是哪个版本,然后改成自己使用的版本

	
		true
		1.7
	
	
		1.7
		1.7
		1.7
	

 

你可能感兴趣的:(Java,Java异常,maven,Intellij,IDEA)