我有一个多模块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
答案 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传递给分叉进程的选项。