Maven编译错误

时间:2012-11-08 16:18:12

标签: java maven netbeans build maven-3

当我在Netbeans中构建和运行我的程序时,它没有问题。但是当我尝试“mvn compile”时,使用相同的pom.xml文件,我收到此错误:

[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

我的java版本不是1.3,这里是“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"

这是第53行:

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

8 个答案:

答案 0 :(得分:21)

问题是Maven2中的maven-compiler-plugin默认使用-source 1.3target 1.3

你可以通过将它添加到你的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>

将它放入最顶层父pom中的pluginManagement部分是切合实际的,这样派生的poms就不需要关心它了。

答案 1 :(得分:5)

您必须在pom.xml中添加一些信息。这样的事情:

   <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>

答案 2 :(得分:1)

在你的日志中,我看到这一行:

generics are not supported in -source 1.3

检查maven-compiler插件的源和目标配置,并将其更新为1.5。

答案 3 :(得分:0)

看来你的maven编译器插件版本是1.3。

查看此链接以强制编译器与JDK 1.7,http://maven.apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html

一起运行

答案 4 :(得分:0)

看来你的maven java home指向jre而不是jdk

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

您必须将其更改为jdk。

尝试java -version,看看有什么

使用/usr/sbin/alternatives --config java更改您的Java版本。

答案 5 :(得分:0)

这是在Eclipse Indigo中修复相同错误的稍微不同的方法。

  • 在Eclipse中打开您的(maven)项目。
  • 右键单击pom.xml
  • 选择... Maven ...添加插件
  • 输入:

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

这会在你的pom.xml中插入一个新的部分并打开一个窗口进行编辑。

然后,您可以按上述方法添加源和目标xml元素,以选择正确的JRE。

该部分在我的项目中看起来像这样:

<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>

请注意,其他一些帖子中没有“build”和“plugins”的额外标签。

保存文件后,Eclipse会通知您,您的pom与您的项目不同步。

然后,您可以右键单击项目...选择Maven..update项目

对我来说,一个关键的洞察力是Maven将自动在Eclipse中重新设置构建路径。您可以通过Project验证哪个...构建路径...配置构建路径...库。

因此,实际上这意味着如果您使用的是Maven项目,则不必在Eclipse中直接配置构建路径。

HTH

答案 6 :(得分:0)

请从Eclipse执行Maven Run,然后从命令提示符运行mvn test。就我而言,此步骤解决了所有问题。

答案 7 :(得分:0)

将此添加到Pom.xml

<properties>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.source>1.8</maven.compiler.source>
</properties>