我导入了一个Maven项目,它使用Java 1.5,即使我有1.6配置为我的Eclipse默认首选项->Java->安装的jre。

当我将Maven项目更改为使用1.6 JRE时,它仍然有从项目使用Java 1.5时遗留下来的构建错误(我在前面描述了这些构建错误:我使用m2eclipse构建错误,但在命令行上没有使用maven2—是我的m2eclipse配置错误吗?)

我将删除该项目,然后再试一次,但我想确保这次它从一开始就使用Java 1.6,看看这是否消除了构建问题。

我如何确保项目在导入时使用Java 1.6 ?


当前回答

Springboot中最简单的解决方案

如果你使用Springboot,我会给你一个最简单的例子:

<properties>
  <java.version>1.8</java.version>
</properties>

然后,右键单击Eclipse项目:Maven >更新项目>从pom.xml更新项目配置

应该可以了。

其他回答

如果有人想知道为什么Eclipse仍然将J2SE-1.5库放在Maven项目的Java构建路径上,即使Maven .compiler.release属性指定了Java版本>= 9(截至2020年10月,即Eclipse版本2020-09,包括Maven版本3.6.3):Maven默认使用Maven编译器插件的3.1版本,而release属性仅在3.6版本中引入。

因此,当使用release属性时,不要忘记在pom.xml中包含Maven编译器插件的当前版本:

<properties>
    <maven.compiler.release>15</maven.compiler.release>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
        </plugin>
    </plugins>
</build>

或者,直接在插件配置中指定Java版本,但可能不那么突出:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <release>15</release>
            </configuration>
        </plugin>
    </plugins>
</build>

这拾起了Line对已接受答案的评论,如果我早点看到它,就可以节省我另一个小时的搜索时间。

我发现我的问题是有人提交了.project和.classpath文件,其中引用Java1.5作为默认JRE。

<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
    <attributes>
        <attribute name="owner.project.facets" value="java"/>
    </attributes>
</classpathentry>

通过关闭项目,删除文件,然后作为Maven项目重新导入,我能够正确地将项目设置为使用工作区JRE或相关jdk,而无需将其恢复到1.5。因此,避免将.project和.classpath文件签入到SVN中

希望这能帮助到其他人。

Springboot中最简单的解决方案

如果你使用Springboot,我会给你一个最简单的例子:

<properties>
  <java.version>1.8</java.version>
</properties>

然后,右键单击Eclipse项目:Maven >更新项目>从pom.xml更新项目配置

应该可以了。

m2eclipse插件不使用Eclipse默认值,m2eclipse插件从POM派生设置。因此,如果你想让Maven项目在Eclipse下导入时使用Java 1.6设置,请适当配置Maven -compiler-plugin,正如我已经建议的那样:

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

如果项目已经导入,则更新项目配置(右键单击项目,然后单击Maven V update project configuration)。

我想对已经提供的答案补充一些东西。maven-compiler-plugin默认会使用Java 1.5编译你的项目,这是m2e获取信息的地方。

这就是为什么你必须在你的项目中显式地声明maven-compiler-plugin,而不是使用1.5版本。有效的pom.xml将隐式使用maven-compiler-plugin pom.xml中的默认设置。