java.lang.UnsupportedClassVersionError 错误原因

本来运行正常的程序突然出现这种异常,的确很令人费解。无论ECLIPSE重新编译程序还是重起Tomcat都无济于事,错误的关键词:internal error;javax.servlet.ServletException;java.lang.UnsupportedClassVersionError;Unsupported major.minor version 49.0。

经过排查,可以肯定的原因是:JDK版本冲突,使用了高版本(1.5)的JDK编译生成class,而使用低版本(1.4)的java来运行。对症下药,只要确保以下几点即可解决问题:
1. 系统安装的JDK版本
JAVA -version 查看一下。重新检查环境变量:希望使用的Java目录放在前面,尤其是不要让oracle之类目录的干扰,oracle 10 默认的是1.5版本,常常会出问题。ClassPath 包含当前目录。

2. ECLIPSE的JDK版本
Windows-->Preferences在弹出的窗口中选择java-->compiler在右上方Compile compliance level:1.4

3. Tomcat对应的版本
如果装了Eclipse的Tomcat插件,Windows-->Preferences在弹出的窗口中选择TOMCAT--> JVM Setting,最上方的JRE选择1.4。如果没有,到JAVA--> installed JREs中添加目录。确保ClassPath 包含正确的版本目录%JAVA_HOME%\jre\lib\rt.jar;%JAVA_HOME%\lib\tools.jar; 当然,前提是%JAVA_HOME%是对的。

4. 清缓存
前面几步基本都不会有问题。最重要的还是要清除以前编译过的Class,因为即便修改了配置,Tomcat默认也不会覆盖已经生成的Class,很令人郁闷。%Tomcat_HOME%\work\Catalina\localhost目录下找找看,把自己的工程删掉,重起Tomcat即可。

你可能感兴趣的:(java,eclipse,jdk,oracle,tomcat)