我需要使用Java 6,但即使在我完成所有配置之后,NetBeans也没有使用它。它使用我的IDE的Java 8默认运行Maven。相同的配置在Eclipse上运行良好,所以我不知道我做错了什么。
我不想在nb-configuration.xml中定义编译器,因为我必须提交文件。我希望NetBeans能够从POM中得到它。
一般信息:
要重现,只需在NetBeans中创建任何类型的Maven项目。在我的情况下,我尝试使用Java,Web和EJB,但没有一个工作。
下图显示JDK已正确添加到IDE中。
工具> Java平台
添加了JDK 1.6。
我尝试过的POM配置:
属性
<properties>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
</properties>
编译器插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
Enforcer插件
执行Java 6会出现以下错误:
Detected JDK Version: 1.8.0-25 is not in the allowed range [1.6,1.7).
------------------------------------------------------------------------
BUILD FAILURE
执行者的配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.3.1</version>
<executions>
<execution>
<id>enforce-versions</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireJavaVersion>
<version>[1.6,1.7)</version>
</requireJavaVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
测试Java 6的代码
以下代码不编译:
import java.nio.file.Files;
import java.time.LocalTime;
public class JavaVersionChecker {
public static void main(String[] args) {
System.out.println(Files.class); // Java 7 API
System.out.println("Time: " + LocalTime.now()); // Java 8 API
// Print Java version
System.out.println(System.getProperty("java.version"));
}
}
测试输出
使用Java 7和8 API编译测试代码,但只接受Java 6。
------------------------------------------------------------------------
Building java6_project 1.0-SNAPSHOT
------------------------------------------------------------------------
--- exec-maven-plugin:1.2.1:exec (default-cli) @ java6_project ---
class java.nio.file.Files
Time: 19:24:05.997
1.8.0_25
------------------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------------------
Total time: 0.610 s
Finished at: 2014-11-21T19:24:06-02:00
Final Memory: 6M/123M
------------------------------------------------------------------------
IDE应检测到JDK 6
答案 0 :(得分:3)
根据评论的建议,我使用提示属性进行配置工作,该属性在生成的 nb-configuration.xml 中也有很好的记录。
添加到pom.xml的配置:
<properties>
<netbeans.hint.jdkPlatform>JDK_1.6</netbeans.hint.jdkPlatform>
</properties>
据我所知,NetBeans的编译版本需要通过专有参数设置,设置非常简单。
有用的nb-configuration.xml详细信息:
影响IDE各个部分的属性,尤其是代码 格式化等。您可以复制并粘贴单个 属性,进入pom.xml文件,IDE将接收它们。那 多个项目可以共享相同的设置(对于 格式化规则例如)。此处定义的任何值都将覆盖 pom.xml文件的值,但仅适用于当前项目。
答案 1 :(得分:0)
此错误是由nb-configuration.xml中的旧条目引起的
按照@BonanzaOne的建议将此属性添加到pom.xml对我来说没有用。
通过更改
<netbeans.hint.jdkPlatform>JDK_1.6.0_34</netbeans.hint.jdkPlatform>
到
<netbeans.hint.jdkPlatform>JDK_1.6</netbeans.hint.jdkPlatform>
直接在nb-configuration.xml中,Netbeans自动选择现有的JDK 1.6。