但行好事  莫问前程

Eclipse中引入外部jar包报Unsupported major.minor version 51.0错误解决方案

一. 问题描述:

我使用的是Eclipse-jee + JDK 1.6.0_24环境,jdk1.6工程中使用外部jar包中的类出现错误如下:

Unsupported major.minor version 51.0

二. 原因分析:

出现上述错误是因为:外部jar包是使用jdk1.7jdk7)编译的,而使用此jar包的工程jdk版本为jdk1.6jdk6),也就是说用jdk7编译的class文件放到基于jdk6运行的tomcat之中,就会报这个错。算是版本不支持。

三. 解决方法

解决方法见下面的步骤:

第一步:在eclipse新增jdk1.7。如下图所示:
1
第二步:修改eclipse的编译环境jdk1.7。具体步骤为:右击项目,选择属性,找到 java build path窗口,选择libraries标签,修改 JRE System libraries1.7。如下图所示:
2
第三步:修改项目启动jdk1.7。如下图所示:
3

知识扩充:

解决这一事件加深了我对eclipsebuild pathjava compiler compliance level的理解:在eclipse中开发的项目有个java build path中可以配置的jdk,还有个java compiler中可以配置compiler level,这两个是有区别的,build path的JDK版本是你开发的时候编译器需要使用到的,就是你在eclipse中开发代码,给你提示报错的,编译的过程;java compiler compliance level中配置的编译版本号,这个编译版本号的作用是,你这个项目将来开发完毕之后, 要放到服务器上运行,那个服务器上JDK的运行版本。常见的问题就是,build path中配置1.7JDKjava compiler compliance level中配置的1.7,但是服务器上是1.6JDK,就报了那个错误,说是编译所用的jdk(1.7)比运行所用的jdk(1.6)高了,这是错误的。

总结:

build pathJDK版本是你开发的时候编译器需要使用到的,例如,如果用的JDK1.4就不能使用泛型。而java compiler compliance level设置的是你写好的JAVA代码按照什么JDK版本级别编译,例如:设置的是1.4,编译出来的class文件可以在1.4以上的JRE上运行,如果用的是5.0级别编译,就不能运行在1.4的环境里面,会提示版本过高。

补充:

后经实例证明,在eclipse中进行开发的时候,build path 中JDK进行类库的编译(就是你使用的类在不在这个JDK中),java compiler compliance level是对这个项目语法的编译(就是你的项目中语法的正确与否),在开发的过程中,这两个地方是都起作用的。所以说,最最安全的做法,是build pathjava complier compliance level和服务器配置的JDK都保持一致,就不会出现任何问题的。

打赏
欢迎关注人生设计师的微信公众账号
公众号ID:longjiazuoA

未经允许不得转载:人生设计师 » Eclipse中引入外部jar包报Unsupported major.minor version 51.0错误解决方案

分享到:更多 ()

人生设计师-接受不同的声音

联系我关于我