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.3
和target 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