我正在将一些项目转换为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 line 10 Java问题
有什么方法可以让m2e不生成.classpath文件,或强制它使用工作区默认的JDK?
答案 0 :(得分:3)
在我看来,Maven在这里帮助你。它迫使Eclipse使用严格的Java 1.6环境,并阻止您使用不属于标准发行版的库。
通常,此错误消息暗示您应该声明新的Maven依赖项,而不是依赖于(例如)JRE/lib/ext
中存在的JAR文件。
答案 1 :(得分:0)
目前无法做到这一点,但可能会修复m2e bug 405661。
截至今天(m2e 1.5.0.20140606-0033),您只能配置m2e以保留其他类路径条目,但它总是会破坏它自动生成的条目。这包括JRE的类路径条目,因此无法手动设置此条目并使其在m2e项目更新后继续存在。
答案 2 :(得分: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编译器以使用具有正确版本的版本。