zoukankan      html  css  js  c++  java
  • The return type is incompatible with JspSourceDependent.getDependants():JasperException问题分析与解决方法

    Linux下基于JSP的报表集成到项目中后,显示不出来,查看tomcat的日志。有例如以下报错信息:


    The return type is incompatible with JspSourceDependent.getDependants()

    Stacktrace:] with root cause
     org.apache.jasper.JasperException: Unable to compile class for JSP:

    An error occurred at line: [33] in the generated java file: [/home/programs/apache-tomcat-PowerSupervise/work/Catalina/localhost/PowerSupervise/org/apache/jsp/reportPages/jspReport/fileRecordReport_jsp.java]

    大致就是生成的JSP相应的java文件33行报错,解析错误。找到相应的java文件里相应代码。例如以下:

    package org.apache.jsp.reportPages.jspReport;
    
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.servlet.jsp.*;
    
    public final class fileRecordReport_jsp extends org.apache.jasper.runtime.HttpJspBase
       <strong> implements org.apache.jasper.runtime.JspSourceDependent</strong> {
    
      private static final javax.servlet.jsp.JspFactory _jspxFactory =
              javax.servlet.jsp.JspFactory.getDefaultFactory();
    
      private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;
    
      static {
        _jspx_dependants = new java.util.HashMap<java.lang.String,java.lang.Long>(1);
        _jspx_dependants.put("/WEB-INF/reportConfig/runqianReport4.tld", Long.valueOf(1435203638000L));
      }
    
      private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005freport_005fhtml_0026_005fwidth_005fseparator_005fselectText_005fscrollWidth_005fscrollHeight_005fscale_005freportFileName_005fparams_005fneedScroll_005fname_005ffuncBarLocation_005fexceptionPage_005fnobody;
    
      private javax.el.ExpressionFactory _el_expressionfactory;
      private org.apache.tomcat.InstanceManager _jsp_instancemanager;
    <strong>
      public java.util.Map<java.lang.String,java.lang.Long> getDependants() {
        return _jspx_dependants;
      }</strong>


    网上搜了搜。大部分原因是因为这个JspSourceDependent类冲突引起的,只是找遍全部WEB-INF/lib和tomcat下的lib以及jre中下有关jsp解析的jar包,除tomcat的lib下。没发现有类似版本号不同反复的jar包。于是在集成开发环境ECLIPSE中打入这个类。竟然能找到这个类。提示自己主动引入后,例如以下:

    然后ctrl键盘按住。点击这个类。最终找到了这个类所在的jar包及路径了,例如以下:

    竟然在jetty-server-8.1.8.jar里也有此类,怪不得呢,于是删除了此类,报表恢复正常了。

    网上也例如以下情况出现此问题:

    1、jsper-runtime.jar存在冲突,删除就可以。

    2、在升级tomcat后的项目中,后出现此问题。解决的方法是新建jsp文件。把老jsp文件的内容copy过来。就攻克了。只是这是网友的解决方法,针对这样的情况,个人之见,根本原因还是jar包版本号与旧的已生成的_jsp.java类中的类存在冲突。仅仅需把tomcat的work文件夹下的东西删除重新启动tomcat用新的环境又一次解析JSP就可以。

    JasperException问题与解决的方法。the return type is incompatible with,JspSourceDependent.getDependants(),jsper.jar冲突,JSP解析异常


     

  • 相关阅读:
    PYTHON 集合set 方法
    PYTHON 购物车程序
    转 mybatis javaType与jdbcType对应
    转 java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeException
    转 Could not create the view: An unexpected exception was thrown.问题解决
    [转] 数据库链接池配置
    HttpServletRequest.getServletContext()一直提示找不到,而引出的问题
    如何解决找不到方法HttpServletRequest.getServletContext() ---- NoSuchMethodError
    web项目编译出错时,原因之一,可能是build path 中order and Export引起
    mysql修改密码
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7136304.html
Copyright © 2011-2022 走看看