为什么maven突然开始使用旧版Java编译?

时间:2012-12-20 18:57:06

标签: java maven

我已经使用maven开发Java几天了。今天我根据these instructions编辑了我的pom.xml。突然运行mvn compile给了我错误,好像我正在编译旧版本的java。像:

  

错误:-source 1.3

不支持泛型

现在我已将我的pom.xml与其原始内容配对,而我仍然收到此错误。我已经完成了mvn clean并删除了目标下的所有内容,但仍然遇到此问题。

这是一个运行编译阶段的maven片段:

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building bahToBeh 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.3:resources (default-resources) @ bahToBeh ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/doug/lucid/bah-bio-demo/bahToBeh/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.0.2:compile (default-compile) @ bahToBeh ---
[INFO] Compiling 9 source files to /home/doug/lucid/bah-bio-demo/bahToBeh/target/classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.880s
[INFO] Finished at: Thu Dec 20 13:52:06 EST 2012
[INFO] Final Memory: 7M/105M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project bahToBeh: Compilation failure: Compilation failure:
[ERROR] /home/doug/lucid/bah-bio-demo/bahToBeh/src/main/java/com/lucid/bahdemo/parsers/pm/MeshReader.java:[23,4] error: generics are not supported in -source 1.3

我配对的pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.lucid</groupId>
  <artifactId>bahToBeh</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>bahToBeh</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.8.1</version>
      <scope>test</scope>
  </dependency>
    <dependency>
      <groupId>com.digitalpebble</groupId>
      <artifactId>behemoth-core</artifactId>
      <version>1.0</version>
  </dependency>
  <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-core</artifactId>
      <version>1.0.4</version>
  </dependency>
  <dependency>
      <groupId>marc4j</groupId>
      <artifactId>marc4j</artifactId>
      <version>2.4</version>
  </dependency>
  </dependencies>
</project>

直到今天,这一直很好。我不确定我可能改变了什么设置或者我如何能够推动我的项目。我甚至仔细检查过安装了正确版本的java:

doug@doug-VirtualBox:~/lucid/bah-bio-demo/bahToBeh$ java -version
java version "1.7.0_10"
Java(TM) SE Runtime Environment (build 1.7.0_10-b18)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)
doug@doug-VirtualBox:~/lucid/bah-bio-demo/bahToBeh$ javac -version
javac 1.7.0_10

这是JAVA_HOME

doug@doug-VirtualBox:~/lucid/bah-bio-demo/bahToBeh$ echo $JAVA_HOME
/usr/lib/jvm/java-7-oracle

Maven IS 使用pom.xml我认为是,如果我运行mvn -X compile我得到:

  

DEBUG](f)project = MavenProject:com.lucid:bahToBeh:1.0-SNAPSHOT @ /home/doug/lucid/bah-bio-demo/bahToBeh/pom.xml

我还删除了我的maven repo rm -rf ~/.m2,看到maven重新下载了同样的问题。

编辑 - 它突然神秘地工作 我不知道发生了什么,但现在突然间它正在工作。我认为我改变的一件事是我评论了一个测试。我去了测试并取消注释,然后运行mvn compile,这次编译。有些州的某个地方不同步,现在事情神奇地起作用了吗?

我不想知道为什么我的工具突然变得不稳定,所以这不是问题的答案,只是更多的信息。

编辑 - 它也突然停止再次工作 看起来像是完全指定了要编译的版本,所以这就是胜利者。

2 个答案:

答案 0 :(得分:8)

显式设置源和目标Java版本。 http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.0</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

答案 1 :(得分:-1)

作为一种解决方法,您可以尝试这一点(鉴于它非常特定于环境,这可能有所帮助)。

您可以使用插件强制执行编译版本。 Maven compilation plugin

祝你好运!