org/eclipse/jetty/server/Connector : Unsupported major.minor version 52.0

一、概述

今天在eclipse中使用Jetty9.3.0的Embedded方法来启动一个web application的时候,出现了如下的exception:

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/eclipse/jetty/server/Connector : Unsupported major.minor version 52.0

在Java中出现52.0的version错误都是由于高版本的java应用放在低版本的JDK中运行,比如此次就是用到了Jetty9中的Connector,其用到了Jdk8中新引入的内容,所以出现了如上错误,在机器上安装JDK1.8并在eclipse中配置使用JDK8后,就能解决如上的exception。

二、JDK的版本问题

1、在eclipse中开发的项目都有个java build path,其中可以配置jdk,另外还有个java compiler中也可以配置compiler level{eclipse>windows>preferences>java>compiler>compiler compliance level}。着两者是有区别的:

build path的JDK版本是你开发的时候编译器需要使用到的,就是你在eclipse中开发代码,给你提示报错的,编译的过程;

而java compiler compliance level中配置的编译版本号,这个编译版本号的作用是,你这个项目将来开发完毕之后,要放到服务器上运行,那个服务器上JDK的运行版本。

有时问题可能是这样的,build path中配置1.7的JDK,而java compiler compliance level中配置的1.7,但是程序实际运行需要的是1.8的JDK,就报了50.2的错误。

总之:

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保持一致,就不会出现任何问题的。

猜你喜欢

转载自josh-persistence.iteye.com/blog/2237468