首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Bad version number in .class file引发的有关问题

2012-09-12 
Bad version number in .class file引发的问题上午学习了下flex的基础知识。下午就开始搭建项目环境。svn没

Bad version number in .class file引发的问题
上午学习了下flex的基础知识。下午就开始搭建项目环境。
svn没有权限,只有用优盘拷贝项目文件了。拷贝,导入工程,用了我快半个小时。
自此开始了我下午的惨痛经历。
导入项目到myeclipse,拷贝的工程。很多红叉叉,几分钟搞定之后。发布到tomcat—》启动
各种debug弹出来。

Resume N次过后。启动完毕。
Ie中访问工程,登录框出来了。输入用户名密码,点击登录。出现如下问题

 [05-21 18:07:56.296 INFO  SystemProperties.<init>():30] Loaded file:/D:/work%20pro/apache-tomcat-5.5.20/webapps/TINMS/WEB-INF/classes/metar-security.properties[05-21 18:07:56.531 ERROR DispatchAction.dispatchMethod():297] Dispatch[/login] to method 'login' returned an exceptionjava.lang.reflect.InvocationTargetExceptionat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke(Unknown Source)at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:75)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)at java.lang.Thread.run(Unknown Source)Caused by: java.lang.UnsupportedClassVersionError: Bad version number in .class fileat java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClass(Unknown Source)at java.security.SecureClassLoader.defineClass(Unknown Source)at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1815)at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:869)at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1322)at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1201)at java.lang.ClassLoader.loadClassInternal(Unknown Source)at com.metarnet.security.manager.UserManager.getOnlineUserIDList(UserManager.java:533)at com.qtby.tinms.login.service.LoginManager.CheckUser(LoginManager.java:54)at com.qtby.tinms.login.action.LoginAction.login(LoginAction.java:123)... 31 more[05-21 18:07:56.546 WARN  RequestProcessor.processException():516] Unhandled Exception thrown: class javax.servlet.ServletException[05-21 18:07:56.546 ERROR StandardWrapperValve.invoke():253] Servlet.service() for servlet action threw exceptionjava.lang.UnsupportedClassVersionError: Bad version number in .class fileat java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClass(Unknown Source)at java.security.SecureClassLoader.defineClass(Unknown Source)at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1815)at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:869)at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1322)at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1201)at java.lang.ClassLoader.loadClassInternal(Unknown Source)at com.metarnet.security.manager.UserManager.getOnlineUserIDList(UserManager.java:533)at com.qtby.tinms.login.service.LoginManager.CheckUser(LoginManager.java:54)at com.qtby.tinms.login.action.LoginAction.login(LoginAction.java:123)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke(Unknown Source)at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:75)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)at java.lang.Thread.run(Unknown Source)

java.lang.UnsupportedClassVersionError: Bad version number in .class file

错误的jdk版本。
好了,想办法解决把。我的jdk是1.6的而Compiler Compliance level默认是5.0
进到当前工程的属性后,选择"Java Compiler"进去后将"Compiler Compliance level"改成当前jdk的版本
确定,开始rebuilding。



此过程大概需要10分钟。(当中开了一个Flash Builder机器慢的快马赛克了,果断关掉还是用了10分钟,很郁闷)
然后,再启动tomcat。



到这就没了。这不比没改版本之前更糟吗!?果断,删除tomcat 的work,删除webapps下的工程。重新发布(发布也得10分钟),问题依然如此。
好吧,删除工程,重复以上操作一次。结果还是这样。
从svn上下载工程,再重复以上操作一次。还是这样。
继续百度,无意间看到了http://sucre.blog.51cto.com/1084905/353608
原来我的tomcat默认的一直都是myeclipse的jre包。而不是自己配置的jdk1.6



选上jdk1.6.重启,一切正常。
这个问题卡了我一下午。
总结:项目jdk版本与以下三个地方决定
1.Window ->Preferences ->Java ->compiler中的compiler compliance level对应的下拉菜单中选择JDK6.0版本(之前是5.0)
2.Window -> Preferences ->Java ->Installed JRES选择安装的jdk1.6,(之前是MyEclipse6.5,相当于5.0)(注意不要选jre)
3.Window -> Preferences ->MyEclipse -> Servers ->Tomcat -> Tomcat 5.x -->JDK中的Tomcat JDK name选择与步骤2相同
在我选择compiler compliance level为6.0时,因为tomcat默认的是MyEclipse6.5(相当于5.0),所以还没有加载工程时就会报错。
如果早一点查资料,不用自己一股脑的删除,重启,很快就能解决问题。还是没有找到问题出在哪。
详细的可以看这里:http://hellosure.iteye.com/blog/868729

热点排行