Maven Compile Error

2020-02-09 04:07发布

When I build and run my program in Netbeans, it works without a problem. But with same pom.xml file when I try "mvn compile" I get this error:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project hadoop-test: Compilation failure
[ERROR] /home/metin/NetBeansProjects/hadoop-test/src/main/java/com/citusdata/hadoop/HadoopTest.java:[53,8] error: generics are not supported in -source 1.3

My java version is not 1.3, here the result of "mvn -version"

Apache Maven 3.0.4
Maven home: /usr/share/maven
Java version: 1.7.0_03, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.2.0-27-generic", arch: "amd64", family: "unix"

and this is the line 53:

Token<BlockTokenIdentifier> token = locatedBlock.getBlockToken();

7条回答
干净又极端
2楼-- · 2020-02-09 04:32

It seems your maven java home point to a jre not jdk

Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre

You have to change it to a jdk.

Try java -version and see what is there

use /usr/sbin/alternatives --config java to change your java version.

查看更多
太酷不给撩
3楼-- · 2020-02-09 04:33

Please Execute Maven Run from eclipse and then run mvn test from command prompt. In my case all issues resolved with this step.

查看更多
做自己的国王
4楼-- · 2020-02-09 04:37

In your log, I see this line:

generics are not supported in -source 1.3

Check the source and target configuration of maven-compiler plug-in, and update it to 1.5.

查看更多
等我变得足够好
5楼-- · 2020-02-09 04:41

It seems your maven compiler plugin version is 1.3.

Have a look at this link to force the compiler to run with JDK 1.7, http://maven.apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html

查看更多
倾城 Initia
6楼-- · 2020-02-09 04:42

Here is a slightly different way to fix the same error in Eclipse Indigo.

  • Open your (maven) project in Eclipse.
  • right click on pom.xml
  • select ...Maven...Add Plugin
  • Enter:

      - groupId: org.apache.maven.plugins
      - artifactId: maven-compiler-plugin
      - version: 2.3.2
    

This will insert a new section in your pom.xml and open a window for editing.

Then you can add the source and target xml elements as described above to select the correct JRE.

The section looks like this in my project:

<build>
  <plugins>
     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
           <source>1.6</source>
           <target>1.6</target>
        </configuration>
     </plugin>
  </plugins>
</build>

Note the extra tags for "build" and "plugins" absent in some of the other posts.

Once you save the file, Eclipse will notify you that your pom is out of synch with your project.

You can then right click the project ...choose Maven..update project

A key insight for me was that Maven will automatically re-set the build path in Eclipse. Which you can verify by Project...build path..configure build path...Libraries.

So in essence this means you should not have to mess with directly configuring the build path in Eclipse if you are using a Maven project.

HTH

查看更多
唯我独甜
7楼-- · 2020-02-09 04:50

The problem is that maven-compiler-plugin in Maven2 by default uses -source 1.3 and target 1.3

You can fix it by adding this to your pom:

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <configuration>
        <compilerVersion>1.5</compilerVersion>
        <source>1.5</source>
        <target>1.5</target>
      </configuration>
    </plugin>

It's practical to put this into pluginManagement section in your topmost parent pom so that your derived poms do not need to care about this.

查看更多
登录 后发表回答