Eclipse Maven项目用JDK14且编译级别1.8时缺失jdk.tools:1.6的解决方案问询
问题核心原因
Java 9及以上版本已移除传统的tools.jar,相关功能已整合到JDK内置模块中,旧第三方依赖传递引入的jdk.tools:jdk.tools:jar:1.6依赖会因为无法匹配本地JDK资源报错,旧版本针对JDK8及更低版本的解决方案自然全部失效。
最优解决方案
步骤1:排除传递引入的jdk.tools依赖
首先定位你项目中传递引入jdk.tools的父依赖,在对应依赖声明中添加排除规则即可,示例配置如下:
<dependency> <groupId>【引入jdk.tools的父依赖groupId】</groupId> <artifactId>【引入jdk.tools的父依赖artifactId】</artifactId> <version>【对应版本】</version> <exclusions> <exclusion> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> </exclusion> </exclusions> </dependency>
如果不确定是哪个依赖引入的,可以在Eclipse中打开pom文件的「Dependency Hierarchy」标签页,搜索jdk.tools即可快速定位到父依赖。
步骤2:对齐Maven编译器插件配置
确认你的maven-compiler-plugin版本在3.8.0以上(该版本开始支持JDK9+环境编译低版本字节码),同时正确配置source、target、release参数,避免隐式依赖旧版JDK组件:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <source>1.8</source> <target>1.8</target> <release>8</release> </configuration> </plugin>
步骤3:刷新项目配置
在Eclipse中右键项目,选择「Maven」→「Update Project」,勾选「Force Update of Snapshots/Releases」后确认,即可清除报错。
注意事项
- 不要继续添加system scope的tools.jar依赖,JDK14+中不存在该文件,强制指定路径只会引发新的报错
- 若你的项目确实需要用到tools.jar对应的功能(比如动态编译、进程attach等),直接使用JDK内置的模块API即可,无需额外引入依赖
内容的提问来源于stack exchange,提问作者Gautam
相关产品推荐
相关产品推荐

