33

我有一个 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 构建的。但是我做了 a mvn clean install,然后 a mvn package,然后在调整了所有设置后再次尝试了该命令,但仍然抛出相同的错误。

4

2 回答 2

44

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

于 2013-03-22T10:32:26.847 回答
14

您可能正在使用需要 Java SE 7 的依赖项。

如果是这种情况,请升级到 Java SE 7(如果您使用 Oracle 的 JRE,但没有支持合同,建议您升级到 Java SE 6,因为 Java SE 6 已于 2 月结束生命周期)或替换此依赖项。

于 2013-03-22T10:11:38.380 回答