Java 有没有办法防止m2e修改eclipse.classpath文件?

Java 有没有办法防止m2e修改eclipse.classpath文件?,java,eclipse,maven,m2e,Java,Eclipse,Maven,M2e,我正在将一些项目转换为Maven项目,但m2e将我的.classpath JRE条目从: <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> <attributes> <attribute name="maven.pomderived" value="true"/> </attributes> </classpat

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

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

致:


这会导致一些错误,如:

说明资源路径位置类型访问限制:类型 由于对的限制,无法访问WindowsPopupMenuSeparatorUI 必需的库C:\程序 Files\Java\jdk1.6.0\u 20\jre\lib\rt.jar DottedJPopupMenuSeparator.Java/acommons/src/com/ks/acommons/gui/lookandfeel行 10 Java问题


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

在我看来,Maven在这方面帮了你的忙。它强制Eclipse使用严格的Java1.6环境,并阻止您使用不属于标准发行版的库


通常,此错误消息暗示您应该声明一个新的Maven依赖项,而不是依赖(例如,
JRE/lib/ext

中存在的JAR文件。这目前是不可能的,但如果已修复,则可能会发生


截至今天(m2e 1.5.0.20140606-0033),您只能将m2e配置为保留额外的类路径条目,但它将始终删除它自动生成的条目。这包括JRE的类路径条目,因此无法手动设置该条目并使其在m2e项目更新后仍然有效。

您需要配置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>

org.apache.maven.plugins
maven编译器插件
1.8
1.8

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

我在Eclipse中将错误更改为警告,同时与有问题代码的所有者一起工作。另请参阅:
        <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>