无需修改Dynamic Web Module facet,将JDK9 Maven Spring Boot2项目导入Eclipse EE Oxygen
我之前也踩过类似的坑,结合自己的解决经验和社区方案,给你梳理下这两个问题的针对性解决步骤:
问题1:pom.xml的JDK配置未被m2eclipse自动识别,构建路径仍显示J2SE-1.5
这个问题本质是m2eclipse对JDK9+的配置解析需要更明确的参数,以及同步机制的细节问题,按以下步骤修复:
确保pom.xml的maven-compiler-plugin配置正确且版本兼容
JDK9开始推荐使用release参数代替单独的source和target,而且必须使用支持JDK9的插件版本(3.8.0及以上),配置示例:<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <release>9</release> <source>9</source> <target>9</target> </configuration> </plugin> </plugins> </build>强制Maven同步项目配置
右键项目 →Maven→Update Project,勾选「Force Update of Snapshots/Releases」后点击确定。这一步会让m2eclipse重新读取pom.xml配置,覆盖之前的手动构建路径设置。检查m2eclipse的Java EE集成开关
打开Window→Preferences→Maven→Java EE Integration,确保「Enable Java EE Configuration」处于勾选状态,这样Maven的配置才能同步到项目的facet和构建路径中。
问题2:Dynamic Web Module 3.1的错误标记无法清除
Eclipse Oxygen发布时JDK9刚推出,对Web项目的支持存在兼容性缺陷,需要针对性调整:
同步Project Facets的Java和Web版本
右键项目 →Properties→Project Facets:- 勾选
Java并选择版本9 - 确保
Dynamic Web Module版本为3.1(或对应Spring Boot 2.0.2自带的servlet-api 4.0.1,选择4.0版本也可) - 点击「Apply」保存
- 勾选
手动修正facet配置文件
直接修改项目根目录.settings下的org.eclipse.wst.common.project.facet.core.xml,确保内容如下(注意替换为你已配置的Tomcat runtime,必须用支持JDK9的Tomcat 9.x版本):<?xml version="1.0" encoding="UTF-8"?> <faceted-project> <fixed facet="wst.jsdt.web"/> <installed facet="java" version="9"/> <installed facet="jst.web" version="3.1"/> <installed facet="wst.jsdt.web" version="1.0"/> <runtime name="Apache Tomcat v9.0"/> </faceted-project>安装Eclipse Oxygen的JDK9支持补丁
打开Help→Eclipse Marketplace,搜索「Java 9 Support for Oxygen」,安装对应的插件后重启Eclipse。这一步是解决Web项目JDK9兼容性的关键,默认Oxygen对JDK9的Web facet支持不完善。清理并重新同步项目
依次执行:Project→Clean,选择当前项目清理- 右键项目 →
Maven→Update Project - 重启Eclipse
另外补充一点:如果运行Maven构建后JDK设置被重置,大概率是因为你的maven-compiler-plugin版本过低,不支持JDK9的配置,所以一定要确保插件版本在3.8.0以上,这样m2eclipse才能正确解析并保持JDK版本设置。
内容的提问来源于stack exchange,提问作者TheBitMuncher

