IDEA中JavaCompiler和ProjectStructure里配置的java版本用途区别
文章标签:
java运行环境下载
前几天我项目切换分支后,idea重新加载maven模块,结果全都编译失败。
先是提示没有设置模块jdk,我就进到Project Structure里面设置了jdk8
设置后没有提示语法错误,但编译还是通不过只
只要代码里面用到了1.8新增的函数,就会有提示,虽然我确定是设置好jdk版本号是1.8了
最后点来点去,才发现JavaCompiler的jdk版本配置成1.5,改回8就可以了
这不禁让我有些疑问,怎么idea有两个地方配置jdk版本,区别是什么
问了AI,回答是这样的:
配置入口 | 作用范围 | 优先级 | 控制内容 |
Project Structure → Project | 全局项目级(所有模块继承) | 基础优先级(低 → 高) | 项目 SDK、语言级别(-source) |
Project Structure → Modules | 单个模块级(覆盖项目级) | 模块级(高于项目级) | 模块 SDK、依赖、源码目录 |
Java Compiler | 编译字节码版本(-target) | 编译参数级(最高) | 字节码版本、编译器选项 |
不过一个个模块修改配置还是有些麻烦,后来我发现:
只要在顶层的pom.xml里面加上这段配置,然后重新装载maven模块即可
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<!-- 指定源版本,即使用的 Java 语言版本,这里设置为 1.8,表示使用 JDK 8 的语法 -->
<source>1.8</source>
<!-- 指定目标版本,即编译生成的字节码适配的 Java 运行环境版本,这里设置为 1.8,表示生成的字节码能在 JDK 8 及以上版本运行 -->
<target>1.8</target>
<!-- 可以根据需要添加额外的编译参数,比如开启更多的警告信息 -->
<compilerArgs>
<arg>-Xlint:all</arg>
</compilerArgs>
<!-- 可以指定编译器的路径,确保使用正确的 JDK 进行编译,若不指定,Maven 会使用系统环境变量中配置的 JDK -->
<!-- <compilerPath>C:\Program Files\Java\jdk1.8.0_91\bin\javac</compilerPath> -->
</configuration>
</plugin>
</plugins>
</build>
原因是idea默认会认为项目的目标字节码版本是1.5,但如果在pom里面有明确配置,则按pom的来