公司让我在原有的项目上增加一个小模块,但是没有源代码,而且JDK等环境版本比较低(JDK1.4)。
于是我将其class文件反编译成java文件,对其进行部分修改后,编译,然后用winrar将新编译成的class文件压缩到原来的jar包。这个时候我运行整个工程,控制台报错。
我重新安装了jdk1.5.0_06,这个时候能运行了,一切都是按照自己修改后的逻辑运行。
可问题出来了,哪怕我只用记事本打开其中的某一个JSP页面,增加一个空格或者是回车,再保存,测试的时候,会报错,具体错误见下面:

解决方案 »

  1.   

    Apache Tomcat/4.0.4 - HTTP Status 500 - Internal Server Error--------------------------------------------------------------------------------type Exception reportmessage Internal Server Errordescription The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: Unable to compile class for JSP注意:sun.tools.javac.Main 已过时。
    error: C:\Program Files\Java\jdk1.5.0_06\jre\lib\rt.jar(java/util/Hashtable.class) 中的类文件格式无效。  major.minor 版本 "49.0" 太新,此工具无法识别。D:\BSIsoft\buildserver\appserver\work\Standalone\localhost\_\content\cm\cmapp\bulletincontent$jsp.java:3: 在 import 中未找到类 java.util.Hashtable。
    import java.util.Hashtable;
           ^
    error: D:\BSIsoft\buildserver\appserver\webapps\ROOT\WEB-INF\classes\com\eway\content\AbstractStrutsColumnContent.class 中的类文件格式无效。  major.minor 版本 "49.0" 太新,此工具无法识别。D:\BSIsoft\buildserver\appserver\work\Standalone\localhost\_\content\cm\cmapp\bulletincontent$jsp.java:15: 在 import 中未找到类 com.eway.content.AbstractStrutsColumnContent。
                     com.eway.content.AbstractStrutsColumnContent;
                     ^
    error: C:\Program Files\Java\jdk1.5.0_06\jre\lib\rt.jar(java/lang/Object.class) 中的类文件格式无效。  major.minor 版本 "49.0" 太新,此工具无法识别。D:\BSIsoft\buildserver\appserver\work\Standalone\localhost\_\content\cm\cmapp\bulletincontent$jsp.java:0: 在 class javax.servlet.GenericServlet 中未找到类 java.lang.Object。
    package org.apache.jsp;
    ^
    6 个错误, 1 个警告 at org.apache.jasper.compiler.Compiler.compile(Compiler.java:285)
    at org.apache.jasper.servlet.JspServlet.loadJSP(JspServlet.java:548)
    at org.apache.jasper.servlet.JspServlet$JspServletWrapper.loadIfNecessary(JspServlet.java:176)
    at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:188)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:683)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:431)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:355)
    at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1058)
    at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:269)
    at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:451)
    at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:312)
    at org.apache.struts.action.RequestProcessor.processActionForward(RequestProcessor.java:401)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1420)
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:502)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:75)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:172)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027)
    at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125)
    at java.lang.Thread.run(Thread.java:595)
      

  2.   

    Apache Tomcat/4.0.4 应该是版本太低了,换个5.x的看看
      

  3.   

    你编译class要在1.4上编译。如果你在eclipse上开发的,可以把这个项目的编译级别设置在1.4(可以用1.5的jdk)
      

  4.   

    在项目上右键,属性中找java compiler
      

  5.   

    或者用javac命令时候指定target为1.4
      

  6.   

    我用winrar将calss文件压缩到原来的jar包里,对winrar的版本应该没有要求吧?
      

  7.   

    winrar是没有,但是你本身产生的class文件和tomcat需要的就不对,这个跟winrar没关系,就是你编译和运行时的jvm版本不一致造成的。