如何将 jdk 9 maven Spring boot 2 项目导入 eclipse ee oxygen,而无需动态 W



我想将现有的jdk9(或10)maven项目导入eclipse ee Oxygen。

即使在 pom 中以各种方式指定 1.9 时,也会显示有关以下内容的日食问题标记:

  • 构建路径指定执行环境 J2SE-1.5。工作区中没有安装与此环境严格兼容的 JRE。

  • 动态 Web 模块 3.1 需要 Java 1.7 或更高版本。

我试过让我的pom构建插件包括:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.9</source>
<target>1.9</target>
</configuration>
</plugin>

或顶部的这些属性:

<maven.compiler.target>1.9</maven.compiler.target>
<maven.compiler.source>1.9</maven.compiler.source> 

我可以摆脱"没有 JRE..."通过确保以下设置来标记日食问题标记:

  • 视窗 - 首选项 - Java - jdk 1.9
  • 项目 - 属性 - 构建路径 - JDK 1.9
  • 项目 - 属性 - Java 编译器 - 1.9 合规性

由于我的pom指定了1.9,不应该不需要这些项目设置吗? - m2 eclipse不应该导入设置为1.9吗?

我无法删除此问题标记:"动态 Web 模块 3.1 需要 Java 1.7 或更高版本。

我尝试过的事情是:

  • 设置不同的组合:项目方面将"动态Web模块"设置为3.1或3.0 - 以及将Java方面设置为9。
  • 将这两个方面设置为未选中
  • 编辑 eclipse 生成的 .settings ~facets.xml 文件以将"动态 Web 模块"设置为 3.0/3.1/或从文件中删除该行

  • 指定较旧的 javax.servlet-api 依赖项

    javax.servlet javax.servlet-api 3.1.0 提供

我正在使用注释配置 Spring - 我没有 Web.xml。 我的绒球包装是战争。

我的JAVA_HOME环境变量在 Windows 7 上设置为 jdk 9。 我在 PATH 变量中有 %JAVA_HOME%\bin。

我没有在任何地方安装较旧的 jdk。 我安装了 jdk10,但只安装了一个 jdk 时仍然会发生这些错误。

我曾经能够将 maven 项目导入到 eclipse 中,当我在 jdk 8 中使用 Eclipse Neon 时,没有任何问题。

我将我的poms更新到jdk 9,这样我就可以移动到Spring Boot 2.0.2.RELEASE

在对所有新版本的测试运行之间 - 我做了这些缓存清理尝试:

  • 删除日食提取的压缩
  • 删除 [userhome]/.eclipse
  • 删除 [源项目]/.设置
  • 从 IDE 中删除项目
  • 重新提取日食,设置 Windows 首选项 jdk9(如果尚未) 重新导入 pom

我尝试使用 Spring 工具套件变体 - 但遇到了相同的"动态 Web 模块 3.1 需要 Java 1.7 或更高版本"错误。

我看过其他人的帖子 - 通常比现在大 1 岁。 他们通常会满足我上面尝试过的所有事情——但是我的"动态Web模块3.1需要Java 1.7或更高版本"错误并没有像其他人那样消失。

这是一个已知问题,不适用于最新版本的任何人 - 还是假定它有效?

我注意到并看到其他人评论说,通过 eclipse 运行 maven 构建会导致以前的"eclipse jdk 版本设置"消失, 就像它尝试使用 M2Eclipse 再次从 POM 重新导入设置 - 但会产生不从 pom - 所以我必须在 Eclipse 设置中再次设置它。 这在Eclipse Neon和jdk8上没有发生

。以下是我上面尝试过的一些链接:

在 Eclipse Maven 项目中更改动态 Web 模块版本

https://crunchify.com/how-to-fix-cannot-change-version-of-project-facet-dynamic-web-module-to-3-0-error-in-eclipse/

解决方案是使用 "9" 而不是 "1.9" 作为 java 版本,因此 pom 中的部分显示为:

<maven.compiler.target>9</maven.compiler.target>
<maven.compiler.source>9</maven.compiler.source> 

这允许 m2 eclipse 插件使用其预期的 java 版本号表示形式导入项目。