Eclipse:Java Build Path重置中的JRE系统库

Jen*_*gsa 15 java eclipse buildpath maven java-8

为了开发JavaFX应用程序,我使用了eclipse4.3.1快照和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>
Run Code Online (Sandbox Code Playgroud)

我很欣赏一个不太灵活的解决方案.

[更新]这个问题似乎与当前版本的问题有关

  • Java 8(1.8.0-ea-b121),
  • Maven(3.1.1/1.5.0.20131218-0705),
  • m2e(1.5.0.20131218-1208)连同
  • JDT beta补丁[ 更新站点 ].

Ren*_*ink 2

maven eclipse 插件 (m2e) 根据maven 编译器插件的<source>和属性选择 java 执行环境。<target>

问题是 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>
    
    Run Code Online (Sandbox Code Playgroud)