Java Maven编译错误
当我在Netbeans中构建和运行我的程序时,它可以毫无问题地工作。但当我尝试“mvn编译”时,使用相同的pom.xml文件时,我会出现以下错误:Java Maven编译错误,java,maven,netbeans,build,maven-3,Java,Maven,Netbeans,Build,Maven 3,当我在Netbeans中构建和运行我的程序时,它可以毫无问题地工作。但当我尝试“mvn编译”时,使用相同的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/Ne
[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”的结果
这是第53行:
Token<BlockTokenIdentifier> token = locatedBlock.getBlockToken();
Token-Token=locatedBlock.getBlockToken();
您必须在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>
org.apache.maven.plugins
maven编译器插件
2.3.2
1.6
1.6
您的maven编译器插件版本似乎是1.3
查看此链接以强制编译器使用JDK 1.7运行,问题在于,Maven2中的
maven编译器插件默认使用-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>
org.apache.maven.plugins
maven编译器插件
1.5
1.5
1.5
将其放入最顶层父pom的pluginManagement
部分是可行的,这样您的派生pom就不需要关心这一点了。在您的日志中,我看到这一行:
generics are not supported in -source 1.3
检查maven编译器插件的源和目标配置,并将其更新为1.5。您的maven java主页似乎指向的是jre而不是jdk
Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre
您必须将其更改为jdk
尝试java-version
,看看有什么
使用/usr/sbin/alternations--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
在我的项目中,该部分如下所示:
<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>
org.apache.maven.plugins
maven编译器插件
2.3.2
1.6
1.6
请注意,其他一些帖子中没有“build”和“plugins”的额外标签
保存文件后,Eclipse将通知您pom与项目不同步
然后可以右键单击项目…选择Maven..更新项目
对我来说,一个关键的洞察是Maven将在Eclipse中自动重新设置构建路径。您可以通过项目…生成路径..配置生成路径..库来验证
因此,从本质上讲,这意味着如果您使用的是Maven项目,就不必在Eclipse中直接配置构建路径
HTH请从eclipse执行Maven Run,然后从命令提示符运行mvn test。在我的情况下,所有问题都通过此步骤解决 将其添加到Pom.xml中
<properties>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
</properties>
1.8
1.8
您是否指定了特定的编译器插件?您的pom中还有其他内容吗?不确定,我不是NetBeans用户,但可能NB添加了一些属性(如maven.compiler.source
,maven.compiler.target
),或者强制执行一个新版本的maven编译器插件,该插件的默认值为1.5
——我的maven版本是3.0.4。如何使用旧的maven编译器插件?这当然是可能的,例如,如果它“隐藏”在父pom的插件管理中。。。只是猜测
<properties>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
</properties>