首页 > 代码库 > java错误:Unsupported major.minor version 51.0

java错误:Unsupported major.minor version 51.0

在搭框架过程中,遇到了问题:javax.servlet.ApplicationContext Unsupported major.minor version 51.0.


解决方法:

将下面依赖

<dependency>
  <groupId>javax</groupId>
  <artifactId>javaee-api</artifactId>
  <version>7.0</version>
</dependency>

改为

<dependency>
  <groupId>javax</groupId>
  <artifactId>javaee-api</artifactId>
  <version>6.0</version>
</dependency>

原理:

不同的JDK版本使用的 major.minor version(主次版本号) 不同,所以会导致这个错误。
JavaSE 8 = 52 (0x34 hex),
JavaSE 7 = 51 (0x33 hex),
JavaSE 6 = 50 (0x32 hex),
JavaSE 5 = 49 (0x31 hex),
J2SE 1.4 = 48 (0x30 hex),
J2SE 1.3 = 47 (0x2F hex),
J2SE 1.2 = 46 (0x2E hex),
J2SE 1.1 = 45 (0x2D hex)
在项目中要编译和运行Java程序的 JDK(JRE)版本要一致,一般把在高版本(比如 JDK7)编译的 class 放到低版本(比如 JRE6)的 JVM 中运行,会出现你上面的错误。

追问:

青不要复制,我的都是1.6的

追答:

亲,除了那些版本号,其他的我没有复制。
你看一下你使用的第三方库有没有是在 JDK6 之前的版本编译的

追问:

十分感谢!!!!
我运行的是crawler4j爬虫的例子,提示
edu/uci/ics/crawler4j/crawler/CrawlConfig : Unsupported major.minor version 51.0
引用了crawler4j等一些包。但要怎么看这些是什么版本编译的呢。

追答:

把这个 jar 解压一下,看一下 META-INF/MANIFEST.MF,里面会有这个信息的。

比如我找的jsoup 的 jar:

技术分享

你就可以看到这个版本的构建的 JDK 版本是 1.8.0_25(JDK8)。

追问:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: yaganjis
Build-Jdk: 1.7.0_13

追答:

很明显啊,你的 Build-JDK 是 1.7.0_13,但是你的运行环境却是 JDK6(比编译环境低啊,注意看下我的评论,我上面说错了一个地方,然后再评论修改了)。所以你应该选用更早版本的 crawler4j 或者升级你的 JDK 才可以


java错误:Unsupported major.minor version 51.0