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

上午学习了下flex的基础知识。下午就开始搭建项目环境。
svn没有权限,只有用优盘拷贝项目文件了。拷贝,导入工程,用了我快半个小时。
自此开始了我下午的惨痛经历。
导入项目到myeclipse,拷贝的工程。很多红叉叉,几分钟搞定之后。发布到tomcat—》启动
各种debug弹出来。
[img]http://dl.iteye.com/upload/attachment/0068/4312/9bdec08d-cddd-309b-9a2c-626111eb8159.jpg[/img]
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 exception
java.lang.reflect.InvocationTargetException
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)
Caused by: java.lang.UnsupportedClassVersionError: Bad version number in .class file
at 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 exception
java.lang.UnsupportedClassVersionError: Bad version number in .class file
at 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。

[img]http://dl.iteye.com/upload/attachment/0068/4314/07773cc8-54fa-3646-9f9a-57e6aa5fdd41.jpg[/img]

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

[img]http://dl.iteye.com/upload/attachment/0068/4316/0d05a370-ee33-3717-972a-a66d48457029.jpg[/img]

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

[img]http://dl.iteye.com/upload/attachment/0068/4318/3f84b545-9415-3296-9598-500f7e8d06f6.jpg[/img]

选上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),所以还没有加载工程时就会报错。
如果早一点查资料,不用自己一股脑的删除,重启,很快就能解决问题。还是没有找到问题出在哪。
详细的可以看这里:[url]http://hellosure.iteye.com/blog/868729[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值