一. 问题描述:
我使用的是Eclipse-jee + JDK 1.6.0_24
环境,jdk1.6
工程中使用外部jar
包中的类出现错误如下:
Unsupported major.minor version 51.0
二. 原因分析:
出现上述错误是因为:外部jar包是使用jdk1.7
(jdk7
)编译的,而使用此jar
包的工程jdk
版本为jdk1.6
(jdk6
),也就是说用jdk7
编译的class
文件放到基于jdk6
运行的tomcat
之中,就会报这个错。算是版本不支持。
三. 解决方法
解决方法见下面的步骤:
第一步:在eclipse
新增jdk1.7
。如下图所示:
第二步:修改eclipse
的编译环境jdk
为1.7
。具体步骤为:右击项目,选择属性,找到 java build path
窗口,选择libraries
标签,修改 JRE System libraries
为1.7
。如下图所示:
第三步:修改项目启动jdk
为1.7
。如下图所示:
知识扩充:
解决这一事件加深了我对eclipse
中build path
和java compiler compliance level
的理解:在eclipse中开发的项目有个java build path
中可以配置的jdk,还有个java compiler
中可以配置compiler level
,这两个是有区别的,build path的JDK版本是你开发的时候编译器需要使用到的,就是你在eclipse中开发代码,给你提示报错的,编译的过程;java compiler compliance level
中配置的编译版本号,这个编译版本号的作用是,你这个项目将来开发完毕之后, 要放到服务器上运行,那个服务器上JDK
的运行版本。常见的问题就是,build path
中配置1.7
的JDK
,java compiler compliance level
中配置的1.7
,但是服务器上是1.6
的JDK
,就报了那个错误,说是编译所用的jdk(1.7)比运行所用的jdk(1.6)高了,这是错误的。
总结:
build path
的JDK
版本是你开发的时候编译器需要使用到的,例如,如果用的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 path
和 java complier compliance level
和服务器配置的JDK
都保持一致,就不会出现任何问题的。
公众号ID:longjiazuoA

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