Maven不会用1.7 JDK编译Java 7

Wes*_*Wes 4 spring maven

我必须是反Maven,因为每次我尝试使用它我花了很多时间挣扎然后放弃.我最新的是尽管拥有1.7 JDK,但我无法编译Java 7源代码.

这是输出mvn compile.有趣的是,当我使用Maven 3.0.4时,错误消息表示-source 1.5而不是-source 1.6Maven 3.2.1

[ERROR] .../src/main/java/pox/common/ServiceResponse.java:[300,43] diamond operator is not supported in -source 1.6
[ERROR] (use -source 7 or higher to enable diamond operator)
[ERROR] .../src/main/java/pox/common/ServiceRequest.java:[185,43] diamond operator is not supported in -source 1.6
[ERROR] (use -source 7 or higher to enable diamond operator)
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我使用的是最新版本的Maven,而Maven正在使用Java 1.7.

$ mvn -v
Apache Maven 3.2.1 (ea8b2b07643dbb1b84b6d16e1f08391b666bc1e9; 2014-02-14T12:37:52-05:00)
Maven home: /usr/local/maven
Java version: 1.7.0_40, vendor: Oracle Corporation
Java home: /usr/local/jdk1.7.0_40-x64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.18-371.4.1.el5", arch: "amd64", family: "unix"
Run Code Online (Sandbox Code Playgroud)

我认为mvn脚本正在添加,/jre因为我的环境变量没有指定它.

$ echo -e "$JAVA_HOME\n$M2_HOME"
/usr/local/java7-x64
/usr/local/maven

$ which javac
/usr/local/java7-x64/bin/javac
Run Code Online (Sandbox Code Playgroud)

我正在编写一些我想要Springify的 POJO,所以我决定使用Maven,并在Spring网站上找到了Maven的入门.

http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#getting-started

我将pom.xml来自站点的源代码复制到我的STS/Eclipse项目中,该项目只包含Java源代码并尝试编译.编译中的任何源代码都没有问题src/main/java.我可以删除依赖于Java 1.7的代码并让Maven进行编译.

到目前为止,我发现的每件事都暗示我没有JAVA_HOME正确设置,但我指的是1.7 JDK.

小智 11

好吧我有一个类似的问题,我有一个maven和eclipse的项目,但有编译的问题,因为maven的默认级别源是java 1.5,当然我的代码是在java 1.6中,所以我不得不添加编译器插件maven设置我的代码源的正确版本,这是我的配置,所以我猜你应该只改变1.6到1.7

<build>
    <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.1</version>
          <configuration>
            <source>1.6</source>
            <target>1.6</target>
          </configuration>
        </plugin>
    </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)