首页 > 解决方案 > 如何在没有动态 Web 模块 3.0 方面黑客的情况下将 jdk 9 maven spring boot 2 项目导入 eclipse ee 氧气?

问题描述

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

即使以各种方式在 pom 中指定 1.9,也会显示 Eclipse 问题标记:

我试过让我的 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 ...”日食问题标记:

既然我的 pom 指定了 1.9,难道不应该不需要这些项目设置吗?- m2 eclipse 不应该将设置导入为 1.9 吗?

我无法删除此问题标记:“Dynamic Web Module 3.1 需要 Java 1.7 或更高版本。”

我尝试过的事情是:

我正在使用注释配置 Spring - 我没有 Web.xml。我的 pom 包装是 WAR。

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

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

当我将 Eclipse Neon 与 jdk 8 一起使用时,我曾经能够毫无问题地将 maven 项目导入 eclipse。

我将我的 poms 更新为 jdk 9,因此我可以迁移到 Spring Boot 2.0.2.RELEASE

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

我尝试使用 Spring Tool Suite 变体 - 但遇到了相同的“动态 Web 模块 3.1 需要 Java 1.7 或更高版本”。错误

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

这是一个已知问题,对最新版本的任何人都不起作用 - 还是假设它起作用?

我注意到并看到其他人评论说,通过 eclipse 运行 maven 构建会导致那些以前的“eclipse jdk 版本设置”消失,就像它尝试使用 m2eclipse 再次从 pom 重新导入设置一样 - 但会产生不希望的效果,即不导入来自 pom 的 1.9 设置 - 所以我必须在 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/

标签: springeclipsemavenspring-boot

解决方案


解决方案是java版本使用“9”而不是“1.9”,所以pom中的部分显示为:

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

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


推荐阅读