Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven编译错误_Java_Maven_Netbeans_Build_Maven 3 - Fatal编程技术网

Java Maven编译错误

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

当我在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/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>