当我在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();
答案 0 :(得分:21)
问题是Maven2中的maven-compiler-plugin
默认使用-source 1.3
和target 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中修复相同错误的稍微不同的方法。
输入:
- 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>