12

当我在 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();
4

9 回答 9

22

问题是maven-compiler-plugin在 Maven2 中默认使用-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>

把它放在pluginManagement最顶层的父 pom 中是很实用的,这样你的派生 pom 就不需要关心这个了。

于 2012-11-08T16:22:45.690 回答
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>
于 2012-11-08T16:21:27.300 回答
1

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

generics are not supported in -source 1.3

检查maven-compiler插件的源和目标配置,更新到1.5。

于 2012-11-08T16:23:30.653 回答
0

看来您的 Maven 编译器插件版本是 1.3。

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

于 2012-11-08T16:22:02.603 回答
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>

请注意其他一些帖子中缺少“构建”和“插件”的额外标签。

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

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

对我来说,一个关键的见解是 Maven 会自动在 Eclipse 中重新设置构建路径。您可以通过 Project...build path..configure build path...Libraries 进行验证。

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

高温高压

于 2013-05-17T20:12:59.243 回答
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 版本。

于 2012-11-08T16:24:28.577 回答
0

将此添加到 Pom.xml

<properties>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.source>1.8</maven.compiler.source>
</properties>
于 2020-06-11T17:10:33.797 回答
0

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

于 2019-01-05T10:05:33.703 回答
-1

如果您使用 Java 8 和 Spring Boot 运行应用程序,则可以通过将以下行添加到 pom.xml 文件来解决此问题

    <build>
            <plugins>
                    <plugin>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot-maven-plugin</artifactId>
                    </plugin>
                    <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-compiler-plugin</artifactId>
                            <version>2.3.2</version>
                            <configuration>
                                 <source>1.8</source>
                                 <target>1.8</target>
                            </configuration>
                    </plugin>
            </plugins>
    </build>
于 2021-09-20T04:19:37.567 回答