我希望在Netbeans和编译期间出现错误时使用java.nio.file。*等新功能,这些功能尚未存在于Java 6中。只是在maven编译器插件配置中指定源和目标版本不起作用:maven编译源,netbeans不关心使用非Java-6的东西。
答案 0 :(得分:1)
在使用Java 7和/或8进行编译时,通过设置源版本会影响两个不同的事情。无论是否安装Java 6,将源级别设置为6都将阻止您使用诸如try with resources,multi之类的功能-catch或lambda表达式。但是,仅此一项不会阻止您使用较新版本中定义的 API 。
要获得后者,您还需要指定引导类路径。以下代码中显示了此示例。
https://github.com/antlr/antlr4/blob/master/pom.xml#L114-L115
在该示例中,引导类路径的使用仅限于使用sonatype-oss-release
进行的编译,只有要求机器才能安装旧的JRE(不一定是JDK)发布版本。此设置使新用户更容易贡献,但这意味着我必须在合并之前使用发布版本双重检查拉取请求。我相信这个项目的长期可维护性已经取得了成功。
请记住,OSX使用不同的位置安装Java 6,甚至使用与Linux和Windows使用的文件名不同的文件名,这解释了为什么路径是按照您在示例中看到的方式进行参数化的。
答案 1 :(得分:0)
好吧,似乎唯一的可能性是强制使用jdk 6.配置bootclasspath需要一个本地化的pom.xml,指向特定于机器的目录,这更糟糕。
<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.7)</version>
</requireJavaVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>