Search code examples
javajspjasper-reports

Any class I imported cannot resolved to a type in my jsp file with 500 error


this is the class I want to use in my jsp:

package com.entity;

public class Days {

    private int d;

    public int getD() {
        return d;
    }

    public void setD(int d) {
        this.d = d;
    }

    public Days() {
        super();
    }

    public Days(int d) {
        super();
        this.d = d;
    }
}

this is my jsp code

<%@page import="org.eclipse.jdt.internal.compiler.ast.ForeachStatement"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import="java.io.*,
    com.entity.Days,com.factory.*,
    net.sf.jasperreports.engine.*,
    net.sf.jasperreports.engine.util.*,
    java.util.*,java.sql.*,
    net.sf.jasperreports.engine.export.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title></title>
<%@ include file="/WEB-INF/views/include/easyui.jsp"%>
<script src="${ctx}/static/plugins/My97DatePicker/WdatePicker.js" type="text/javascript"></script>

</head>
<body style="font-family: '';">

<div id="tb" style="padding:5px;height:auto;font-size:12px;" class="datagrid-toolbar">
    <div>
        <span>report type:</span>
        <select id="reportType" class="easyui-combobox" name="dept" >
            <OPTION value="1">waterlevel</OPTION>
            <OPTION value="2">rainfall</OPTION>
            <OPTION value="3">pressure</OPTION>
        </select>
        <span class="toolbar-item dialog-tool-separator"></span>
        <span>month:</span>
        <input id="db" type="text" name="from" class="easyui-datebox" data-options="width:150,prompt: 'month'"/>
        <span class="toolbar-item dialog-tool-separator"></span>
        <a href="" class="easyui-linkbutton" plain="true" iconCls="icon-search" onclick="view()">check</a>
    </div>
</div>
<%
    Days days = new Days(2);
    out.println(days.getD());
 %>
<%--
        File reportFile = new File(application.getRealPath("WEB-INF/views/jasper/successday.jasper"));
        JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile);

        try{
            //java bean
            JRDataSource dataSource = new JRBeanCollectionDataSource(DaysFactory.get());
            JasperReport  jasperReport = (JasperReport) JRLoader.loadObject(reportFile);
            jasperPrint = JasperFillManager.fillReport(jasperReport, null, dataSource); 

            JRHtmlExporter exporter = new JRHtmlExporter();
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
            exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
            exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE);
            exporter.exportReport();
            out.flush(); 
        }catch(Exception e){
            e.printStackTrace();
        }
--%>
<hr>
</script>
</body>
</html>

this is the error

HTTP Status 500 - Unable to compile class for JSP:

[enter image description here]

This is the StackTrace:

Stacktrace:
    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366)
    org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:468)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)

So, whatever the class is, the same the error is!


Solution

  • You must import you class Days into the jasper template.

    Inside your jrxml file it will looks like that :

    <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="yourreport">
        <!-- properties -->
        <import value="com.entity.Days"/>
        <!-- the rest body of template -->
    </jasperReport>
    

    Then you must compile your template with com.entity.Days on classpath (in iReport or in JasperSoftStudio). After this steps it must works!