MyEclipse新导入项目启动时出现这个错误:
Caused by: Unsupported major.minor version 51.0
java.lang.UnsupportedClassVersionError: com/xxx/LoginAction : Unsupported major.minor version 51.0 (unable to load class com.xxx.LoginAction)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2961)
......
查阅网上资料找到了原因:用高版本JDK编译的class文件运行在基于低版本JDK的Tomcat环境中(也即JDK比JRE版本高),会出现这个错误;解决办法也是相应地将高版本JDK降为合适的低版本即可。
但这之中还有些细节:Eclipse中有Build Path于Compiler之分,Build Path中需要选择所采用的JDK版本,这个JDK是在开发时用于语法提示与特性(泛型等)支持;Compiler则是编写完程序进行编译时所用的JDK版本(例如部署到Tomcat之前MyEclipse会对代码进行编译,然后将class文件Deploy到Tomcat中)。
而在真正运行时,则是基于JRE,也就是我们通常指的JVM,如果编译的JDK版本是6,JRE版本是7,程序能正常运行(向后兼容);如果编译的JDK版本是7,JRE版本是6(低版本的JVM环境),那么老JVM是无法正常执行它所未知新版本编译的class文件。
在MyEclipse开发环境中,JDK与JRE一般都是一致的(无论是自带的还是自己下载安装的),但Compiler Level就不一定与它一致,对于这次遇到的问题,除了检查项目所依赖的JDK版本之外(在Install JREs中检查安装的JDK版本及确认Build Path中项目的JDK版本),还需要设置相应的Compiler Level,如图:
如果文章对你有用,请在收藏之余“顶/赞”一下以示鼓励吧 (/ω\)
来源:oschina
链接:https://my.oschina.net/u/551773/blog/278623