bootstrap类路径未与-source 1.6一起设置

Eme*_*let 8 classpath jvm-hotspot maven-3

我正在将我的应用程序从java 1.6升级到1.7.当我尝试使用Maven 3.2.1进行构建时,我的构建失败并出现以下错误消息:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project my-app5: Compilation failure: Compilation failure:
[ERROR] could not parse error message: warning: [options] bootstrap class path not set in conjunction with -source 1.6  
Run Code Online (Sandbox Code Playgroud)

我正在使用java 1.7热点,之前我使用的是1.6 jrockit.我的应用程序是多模块,很少有模块像往常一样编译和构建,这个模块失败了.

我已正确设置java home并且mvn --version显示在输出下方:

Apache Maven 3.2.1 (ea8b2b07643dbb1b84b6d16e1f08391b666bc1e9; 2014-02-14T23:07:52+05:30)
Maven home: C:\Users\me\Maven3\apache-maven-3.2.1-bin\apache-maven-3.2.1\bin\..
Java version: 1.7.0_51, vendor: Oracle Corporation
Java home: C:\Program Files\jdk17051\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"  
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

Eme*_*let 7

我在编译器插件中使用以下配置解决了它:

<fork>true</fork>
<executable>${JAVA_HOME}/bin/javac</executable>
<compilerVersion>1.7</compilerVersion>
<source>1.7</source>
<target>1.7</target>  
Run Code Online (Sandbox Code Playgroud)

这将使用您在JAVA_HOME环境属性中定义的 JDK 。


R. *_*olt 5

这篇文章引用:

Java 5.0和6曾经很难支持编译类来定位旧版本的Java.它始终支持以前的版本,但通常不再支持.即使您可以编译以前的版本,也必须小心不要使用以前版本中存在的功能.

您应该-Xbootclasspath在使用javac时包括:

javac -Xbootclasspath:/path/to/jdk6/rt.jar -target 1.6 -source 1.6 Main.java
Run Code Online (Sandbox Code Playgroud)

或使用-target 1.7(或当然更高)编译:

javac -target 1.7 -source 1.7 Main.java
Run Code Online (Sandbox Code Playgroud)

或使用javacjdk 6:

/path/to/jdk6/bin/javac Main.java
Run Code Online (Sandbox Code Playgroud)