Maven Can';不能针对不同的java版本进行编译

Maven Can';不能针对不同的java版本进行编译,maven,compilation,version,java-7,Maven,Compilation,Version,Java 7,我有一个多模块maven项目。我对它的一个示例进行了mvn清理安装,该示例下载并安装了一些依赖项 如果我在Maven下载和编译的WEB-INF/lib中的某些JAR中执行$文件WhateverClass.class,我会不断得到 WhateverClass.class: compiled Java class data, version 51.0 这意味着这个类是用Java7编译的 不管我自己编译那个模块多少次,我都会得到这个!为什么? 在我看到目标文件夹是如何生成的之后,我还检查了模块本身的

我有一个多模块maven项目。我对它的一个示例进行了
mvn清理安装
,该示例下载并安装了一些依赖项

如果我在Maven下载和编译的WEB-INF/lib中的某些JAR中执行
$文件WhateverClass.class
,我会不断得到

WhateverClass.class: compiled Java class data, version 51.0
这意味着这个类是用Java7编译的

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

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

<configuration>
  <source>1.5</source>
  <target>1.5</target>
</configuration>
和javac版本:

javac 1.6.0_23
编辑


这是我的

当你遇到这样的问题时,试着找出问题所在。第一步是沿着JAR的路径向后走:您在哪里找到了这个类?那个罐子是从哪里来的?如果它来自一场战争,那它来自哪里?执行此操作,直到找到编译
.class
文件的计算机。检查JAR和
target/classes/
文件夹中的
.class
文件

在每一步中,在
WhateverClass.class
上运行
file
,当您看到Java7时,再进一步

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

  • mvn-v
    显示Maven和Java的版本
  • mvn帮助:effective pom
    显示已解析的pom(即,在包含每个父pom之后,解析所有属性,您可以命名它)。哪个
    target
    选项处于活动状态
  • 使用
    -X
    运行
    mvn
    ,以获得调试输出。这有助于查看Maven将哪些选项传递给分叉进程

thx@Aaron,我不知道该怎么办。当我使用mvn-v时,我仍然得到Java6版本。当查看有效的pom(编辑)时,我没有看到目标1.7的痕迹。不确定你所说的“什么计算机罐子来自”是什么意思。好吧,如果你在磁盘上有一个文件,那么这个文件来自某个地方。硬盘不会突然产生新文件。所以你需要找出一个文件的来源,然后去那里重复。
javac 1.6.0_23