不支持的major.minor版本51.0,但所有内容均设置为JDK 1.6


问题内容

我有一个Maven Eclipse应用程序,正在尝试使用以下命令在命令提示符下运行:

java -cp target/classes;"target/dependency/*" com.example.Main

不幸的是,它引发了一个错误:

UnsupportedClassVersionError : unsupported major.minor version 51.0

我做了一些挖掘,发现它与在较新版本的JDK上运行的应用程序(而不是在其上运行的JRE)有关。显然51意味着它是为1.7构建的,但是我的计算机上没有JDK
7。

因此,我确保一切都设置为1.6版:

根目录中的system.properties文件包含

java.runtime.version=1.6

添加了Maven属性

<java.version>1.6</java.version>

在我的pom.xml中指定了Maven编译器插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
    </configuration>
</plugin>

我使用返回的命令java -version检查了我的java版本

Java version "1.6.0_38"
Java(TM) SE Runtime Environment (build 1.6.0_38-b05)
Java HotSpot(TM) 64-bit Server VM (build 20.13-b02, mixed mode)

设置了maven-compiler-
plugin之后,对项目的更新导致Eclipse自动将编译器级别设置为1.6,将项目构面级别设置为1.6,并将JavaSE-1.6
jre系统库添加到我的项目中。

因此,我完全不知道此JDK 1.7的来源。我从来没有在这台计算机上安装JDK 1.7来开始…

另外,最初,maven-compiler-plugin不存在,所以我猜它是用1.5构建的。但是我先做了一个mvn clean install,然后做了一个,然后mvn package在调整了所有设置之后再次尝试了该命令,但仍然抛出相同的错误。


问题答案:

可能您有一个需要Java 1.7的依赖项