【问题标题】:Unsupported major.minor version 51.0 while compiling with java 6使用 java 6 编译时不支持的 major.minor 版本 51.0
【发布时间】:2014-12-08 19:16:20
【问题描述】:

我正在尝试运行一个 java 应用程序,但是当我在 JBOSS 上启动它时,我得到了错误:

java.lang.UnsupportedClassVersionError: net/sourceforge/jtds/jdbc/Driver : Unsupported major.minor version 51.0

我四处寻找,发现这是用java 7编译代码并用java 6运行造成的,所以我开始寻找我的java配置。

当我运行 javac -version 并返回时:

U:\>javac -version
javac 1.6.0_27

当我运行 java -version 它返回我:

U:\>java -version
java version "1.6.0_27"
Java(TM) SE Runtime Environment (build 1.6.0_27-b07)
Java HotSpot(TM) Client VM (build 20.2-b06, mixed mode)

当我运行 mvn -v:

U:\>mvn -v
Apache Maven 3.0.4 (r1232337; 2012-01-17 06:44:56-0200)
Maven home: C:\dev\apache-maven-3.0.4\bin\..
Java version: 1.6.0_27, vendor: Sun Microsystems Inc.
Java home: C:\dev\Java\jdk1.6.0_27\jre

我不确定为什么会这样,因为一切都在 java 6 上运行,而 51.0 版本来自 java 7,根据这篇文章: How to fix java.lang.UnsupportedClassVersionError: Unsupported major.minor version

有人知道我的代码如何在 java 7 上编译,而不是在 java 6 上编译吗?

【问题讨论】:

    标签: java maven jboss


    【解决方案1】:

    问题在于 jTDS 库本身是在 Java 7 中编译的。您应该使用 Java 7 来运行它,而不是 Java 6。

    如果您无法更改 Java 版本,您可以尝试使用在 Java 6 中编译的旧版本库。或者如果您可以访问源代码,您可以尝试使用 -target 编译器标志集构建它到 1.6。

    【讨论】:

    • 我的 JBOSS 库上的 JTDS 是 1.2.2,它适用于 java 6,而不是 java 7。我找到适用于 java 7 的 JTDS 版本的唯一地方是在 eclipse 的 .settings 中,但是因为我使用maven编译代码,对我来说仍然没有意义。
    • 您确定应用程序中使用的版本是用于 Java 6 的吗?该错误清楚地表明这些类具有 Java 7 格式。也许你可以运行mvn dependency:tree 来检查 Maven 中使用的版本。同样来自this link,版本 1.3.0 是第一个使用 Java 7 的版本。
    • 我的应用程序中的所有 pom 都没有说明特定的 JTDS 版本。我搜索了整个工作区,发现仅在 eclipse .settings 文件中出现了 JTDS。没有其他地方。
    猜你喜欢
    • 2017-01-10
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 2015-05-29
    相关资源
    最近更新 更多