4

我正在使用 Spring Tool Suite 和 m2e 将我们现有的一些项目转换为 Maven 项目。有问题的项目使用 jdk1.6.0_20,它在 Eclipse 中被命名为 [jdk1.6]。但是,当我执行 Maven -> Update 项目时,它会用标准 [JavaSE-1.6] 替换该 jre。虽然它们似乎指向相同的库,但名称的更改会导致一系列异常,例如:

访问限制:由于所需库 C:\Program Files\Java\jdk1.6.0_20\jre\lib\rt.jar 的限制,无法访问类型 WindowsPopupMenuSeparatorUI

我的 pom.xml 有这个:

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
    </configuration>
</plugin>

有没有办法让 Maven/m2e 使用默认工作区 JRE 而不是用 .classpath 中的特定工作区替换它?

4

3 回答 3

4
  1. 进入项目的配置构建路径并转到库选项卡。
  2. 删除 JRE 系统库
  3. 单击“添加库...”并选择“工作区默认 JRE”

这将为您提供当前的 JRE,而不是指定特定的 JRE

于 2012-09-07T16:58:31.143 回答
2

将 maven-compiler-plugin 添加到您的 pom 会强制 maven 使用给定版本的 Java:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
             <version>3.3</version>
             <configuration>
                 <source>1.8</source>
                 <target>1.8</target>
             </configuration>
        </plugin>
    </plugins>
</build>

但是,如果您的系统上同时安装了 jre 和 jdk(对于特定的 java 版本),maven 可能会选择 jre 然后抱怨它需要 JDK。在 Eclipse 中使用 Maven > Update Project后可能会发生这种情况。

为了解决这个问题,在 Eclipse 中,右键单击 JRE System Library > Properties > Environments 并选择 JavaSE-1.8。如果您的系统中有多个兼容的 JRE,请勾选 jdk1.8.x > OK > 选择 JavaSE-1.8 (jdk1.8.x) 作为执行环境 > OK

现在 maven 应该选择 Java 版本 1.8,Eclipse 会告诉 maven 使用 jdk1.8 作为这个 java 版本的默认 JRE。

于 2015-07-17T14:13:25.070 回答
1

事实证明,Maven 似乎没有办法做到这一点。相反,当我与违规代码的所有者一起解决问题时,我将错误更改为 Eclipse 设置中的警告。

于 2012-09-14T14:47:11.673 回答