在搭框架过程中,遇到了问题: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 才可以
时间: 2024-10-13 16:14:56