无法编译为不同的java版本

时间:2012-10-18 12:53:47

标签: maven compilation version java-7

我有一个多模块maven项目。我做了其中一个示例的mvn clean install,下载并安装了一些依赖项。

如果我在Maven下载和编译的WEB-INF / lib的某些罐子里做了$ file WhateverClass.class我一直在

WhateverClass.class: compiled Java class data, version 51.0

表示该类已使用Java 7编译。

无论我先编译该模块多少次,我都会得到这个!为什么? 在看到目标文件夹是如何生成之后,我还检查了模块本身的.class文件。

在整个项目中,一些POM.xml指定了

<configuration>
  <source>1.5</source>
  <target>1.5</target>
</configuration>

但没有指定更高的java版本。

我的java版本是:

java version "1.6.0_23"
OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-0ubuntu1.11.10)
OpenJDK Client VM (build 20.0-b11, mixed mode, sharing)

和javac版本:

javac 1.6.0_23

修改

这是我的effective-pom

1 个答案:

答案 0 :(得分:0)

当您遇到类似问题时,请尝试隔离问题。第一步是向后追踪JAR的路径:你在哪里找到了这门课程? JAR来自哪里?如果它来自WAR,它来自哪里?执行此操作直到找到编译.class文件的计算机。检查.class文件夹中的JAR和target/classes/文件。

在每个步骤中,在file上运行WhateverClass.class,并在看到Java 7时更进一步。

找到构建计算机后,可以使用以下选项调试构建过程:

  • mvn -v向您展示Maven和Java的版本。
  • mvn help:effective-pom显示已解析的POM(即在包含每个父POM之后,解析所有属性,您将其命名)。哪个target选项有效?
  • 使用mvn运行-X以获取调试输出。这有助于查看Maven传递给分叉进程的选项。