为JDK10配置Maven并使用jdeps时遇编译错误求助
解决JDK10下Maven编译报错:Source/Target option 5不被支持的问题
你遇到的问题核心是maven-compiler-plugin版本过低,完全不兼容JDK10,同时项目没有明确指定符合JDK10要求的编译版本参数。删除本地M2仓库没用是因为问题不在依赖缓存,而是插件配置和编译规则的问题。
具体解决方案:
1. 升级maven-compiler-plugin到支持JDK10的版本
你当前使用的3.1版本发布于2013年,远早于JDK10的发布时间(2018年),根本不支持JDK10的编译规则。建议升级到3.8.1及以上版本,这个版本开始原生支持JDK9+的编译特性。
2. 指定编译的source和target版本为JDK10
JDK10已经彻底移除了对1.5版本编译参数的支持,必须明确指定maven.compiler.source和maven.compiler.target为10(也可以用release参数统一指定,效果一致)。
修改后的test.generator模块pom.xml示例:
<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.kinetix</groupId> <artifactId>test.master</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>com.kinetix.test</groupId> <artifactId>test.generator</artifactId> <version>1.0.0</version> <name>test.generator</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- 指定编译版本为JDK10 --> <maven.compiler.source>10</maven.compiler.source> <maven.compiler.target>10</maven.compiler.target> <!-- 可选:用release参数统一指定,效果和上面两行一致 --> <!-- <maven.compiler.release>10</maven.compiler.release> --> </properties> <!-- 升级maven-compiler-plugin版本 --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> </plugin> </plugins> </build> </project>
3. 额外确认:检查系统JAVA_HOME配置
确保你的系统环境变量JAVA_HOME指向的是JDK10的安装目录,Maven默认会使用JAVA_HOME指定的JDK进行编译,避免出现JDK版本不匹配的隐性问题。
完成以上修改后,重新执行Maven构建命令,应该就能解决编译报错的问题了。
内容的提问来源于stack exchange,提问作者Cora.Kn.Kwok
相关产品推荐
相关产品推荐

