【问题标题】:Eclipse: JRE System Library in Java Build Path resetEclipse:Java 构建路径中的 JRE 系统库重置
【发布时间】:2013-11-22 13:13:15
【问题描述】:

为了开发 JavaFX 应用程序,我使用了 4.3.1 snapshot of eclipse 和 JDK 8 build b116。 在我的工作区项目中,构建路径中包含的 JRE 库一直重置回 Java 1.4:

不幸的是,这只能临时修复(直到下次 eclipse 重启):

在我的 pom 文件的构建部分中,我有:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <debug>true</debug>
        <debuglevel>source,lines</debuglevel>
    </configuration>
</plugin>

我希望有一个不那么不稳定的解决方案。

[UPDATE]当前版本的问题似乎已修复

  • Java 8 (1.8.0-ea-b121),
  • Maven (3.1.1/1.5.0.20131218-0705),
  • m2e (1.5.0.20131218-1208) 连同
  • JDT 测试版补丁 [Update site]。

【问题讨论】:

  • 将项目 facet 中的 java 版本更改为 1.8。也许您可以尝试运行 eclipse 以使用 java 1.8(我认为这不会有任何影响)。 Pom.xml 依赖看起来不错
  • @Jens 你能解决这个问题吗?我现在在使用 Eclipse 4.3、Maven 3.2.1 和 JDK 1.8.0b129 时处于同样的情况。
  • @RAM:我更新了我的帖子,提供了一些关于我当前(工作)版本的详细信息,希望能有所帮助。
  • wiki.eclipse.org/JDT/Eclipse_Java_8_Support_%28BETA%29 的安装说明似乎有效。我可以使用 Java 8 功能,但 Maven 项目的执行环境仍列为 J2SE-1.4。

标签: java eclipse maven buildpath java-8


【解决方案1】:

maven eclipse 插件 (m2e) 根据 maven 编译器插件的 &lt;source&gt;&lt;target&gt; 属性选择 java 执行环境。

问题是 Kepler 中既没有可用的 1.8 执行环境,m2e maven 编译器连接器也无法映射它。

因此,在 Kepler 和 m2e 支持之前,我看到了两种解决方案:

  1. 让maven把环境改成1.4,把你1.8的JDK映射到执行环境J2SE-1.4。然后您的项目将使用正确的 JDK。但是接下来所有依赖 1.4 的项目当然会使用 1.8 的 JDK。

  2. 使用pluginManagenent 关闭maven-compiler-plugin 生命周期处理。这应该可以防止 m2e 插件更新执行环境,您可以手动设置它。

    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                     <lifecycleMappingMetadata>
                           <pluginExecutions>
                                 <pluginExecution>
                                     <pluginExecutionFilter>
                                           <groupId>org.apache.maven.plugins</groupId>
                                           <artifactId>maven-compiler-plugin</artifactId>
                                           <versionRange>[1.0.0,)</versionRange>
                                         <goals>
                                             <goal>compile</goal>
                                         </goals>
                                     </pluginExecutionFilter>
                                     <action>
                                          <ignore />
                                     </action>
                                 </pluginExecution>
                           </pluginExecutions>
                     </lifecycleMappingMetadata>
               </configuration>
           </plugin>
        </plugins>
    </pluginManagement>
    

【讨论】:

  • 感谢您的全面回答。看起来第二个选项解决了这个问题。只是让我有点担心,Mavens Updating Project 现在会抛出 java.lang.NullPointerException at org.eclipse.m2e.core.internal.lifecyclemapping.model.PluginExecutionFilter.match(PluginExecutionFilter.java:337) ...
  • 嗯,这不是我所期望的。稍后或明天我会看看它。
  • 我也得到了 NPE 并更新了我的答案。 NPE 现在应该没有了,您应该仍然可以手动设置执行环境。
  • 感谢您回到这里。现在,pom 文件编辑器显示错误Cannot parse lifecycle mapping metadata for maven project。 :-/
  • @JensPiegsa 您遇到的解析异常是由goalsversionRange 标签引起的。我更新了我的答案。但如果lifecycleMappingMetadata 正确,m2e 将再次更新执行环境。因此,使用lifecycleMappingMetadate 将其关闭是行不通的。所以只剩下一个选择,nr。 1 我提议的。希望对您有所帮助。
猜你喜欢
  • 2015-04-15
  • 2013-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多