Maven编译错误

当我在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 token = locatedBlock.getBlockToken(); 

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

您可以通过将其添加到您的pom来修复它:

   org.apache.maven.plugins maven-compiler-plugin  1.5 1.5 1.5   

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

您必须在pom.xml中添加一些信息。 像这样的东西:

   org.apache.maven.plugins maven-compiler-plugin 2.3.2  1.6 1.6   

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

 generics are not supported in -source 1.3 

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

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

看一下这个链接,强制编译器与JDK 1.7一起运行, http://maven.apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html

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

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

你必须将它改为jdk。

试试java -version ,看看有什么

使用/usr/sbin/alternatives --config java来改变你的java版本。

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

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

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

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

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

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

    org.apache.maven.plugins maven-compiler-plugin 2.3.2  1.6 1.6     

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

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

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

对我来说,一个关键的见解是Maven将自动在Eclipse中重新设置构建路径。 您可以通过Projectvalidation哪个…构建路径…配置构建路径…库。

所以从本质上讲,这意味着如果您使用Maven项目,则不必在Eclipse中直接配置构建路径。

HTH