2

我正在将我们的一些项目转换为 Maven 项目,但 m2e 将我的 .classpath JRE 条目从:

<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
    <attributes>
        <attribute name="maven.pomderived" value="true"/>
    </attributes>
</classpathentry>

到:

<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
    <attributes>
        <attribute name="maven.pomderived" value="true"/>
    </attributes>
</classpathentry>

这会导致一些错误,例如:

说明 资源路径 位置 类型 访问限制:类型 WindowsPopupMenuSeparatorUI 因所需库的限制而无法访问 C:\Program Files\Java\jdk1.6.0_20\jre\lib\rt.jar DottedJPopupMenuSeparator.java /acommons/src/com/ ks/acommons/gui/lookandfeel 第 10 行 Java 问题

有什么办法可以让 m2e 不生成 .classpath 文件,或者强制它使用工作区默认的 JDK?

4

3 回答 3

3

在我看来,Maven 正在帮助你。它强制 Eclipse 使用严格的 Java 1.6 环境并阻止您使用不属于标准发行版的库。

通常,此错误消息暗示您应该声明一个新的 Maven 依赖项,而不是依赖于 (eg) 中存在的 JAR 文件JRE/lib/ext

于 2012-09-10T18:46:07.653 回答
0

目前这是不可能的,但如果m2e 错误 405661已修复,则可能是这样。

从今天开始(m2e 1.5.0.20140606-0033),您只能将 m2e 配置为保留额外的类路径条目,但它总是会破坏它自动生成的条目。这包括 JRE 的类路径条目,因此无法手动设置此条目并使其在 m2e 项目更新后继续存在。

于 2014-07-09T12:12:10.780 回答
0

您需要配置 Maven 以使用正确的 JRE。

您正在做的是您将 Eclipse 配置为使用某个 JRE,而现在您希望 Maven 使用相同的 JRE。这不起作用,因为 Maven 将使用 POM ( pom.xml) 来确定要使用的 JRE。这是有道理的,因为 Maven 是一个在 Eclipse 之外运行的命令行工具。m2e 只是将 Eclipse 配置为与命令行中的 Maven 类似。如您所见,Maven 在这里可以控制,而 Eclipse 不是!

要使两者相互配合,您需要像这样配置 Maven 编译器插件:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source> <!-- JRE version that you need -->
                <target>1.8</target>
            </configuration>
        </plugin>

这将告诉 Maven 你想要哪个 JRE 版本。现在您可以在 Eclipse 首选项中配置匹配的 JRE 版本,m2e 将配置 Eclipse 编译器以使用具有正确版本的编译器。

于 2017-12-20T14:33:20.573 回答