-2

Jasper レポート クラスを呼び出すサーブレットがあります。

protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
        ReportGeneratorModel.generateReport();
        response.sendRedirect("report.jsp");
}

ReportGeneratorModel は MYSQL データベースを呼び出し、レポートを生成します。

public static void generateReport() {
    Connection connection = null;
    try {
        Class.forName("com.mysql.jdbc.Driver");
        connection = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/cleanhandsreport?"+"user=Manager&password=PASSWORD");
    } catch (SQLException e) {
        e.printStackTrace();
        return;
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
        return;
    }

    JasperReportBuilder report = DynamicReports.report();//a new report
    report
      .columns(
          Columns.column("HospitalID", "HospitalID", DataTypes.stringType()),
          Columns.column("GroupID", "GroupID", DataTypes.stringType()), 
          Columns.column("HandWashViolation", "HandWashViolation", DataTypes.stringType()))
      .title(//title of the report
          Components.text("CleanHands Report")
          .setHorizontalAlignment(HorizontalAlignment.CENTER))
          .pageFooter(Components.pageXofY())//show page number on the page footer
          .setDataSource("SELECT HospitalID, GroupID, Time, HandWashViolation FROM report", 
                                  connection);

    try {
                //show the report
        report.show();

                //export the report to a pdf file
        report.toPdf(new FileOutputStream("report.pdf"));
    } catch (DRException e) {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
  }

次のエラーが表示されます

    Jan 31, 2015 2:56:44 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [rbccps.cleanhands.report.controller.ReportHomeServletController] in context with path [/CleanHandsReport] threw exception [Servlet execution threw an exception] with root cause
java.lang.ClassNotFoundException: net.sf.dynamicreports.report.exception.DRException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
at rbccps.cleanhands.report.controller.ReportHomeServletController.doPost(ReportHomeServletController.java:36)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)

dynamicreports-4.0.0/lib フォルダーのすべての jar ファイルと、クラスパスに dynamicreports-core-4.0.0.jar があります。

レポートをスタンドアロンの Java アプリケーションとして試すと、すべて正常に動作します。

generateReport() メソッドにいくつかのログを追加しようとしました。メソッドの先頭に配置されていても、どれも印刷されません。

問題に関する任意のポインタは大歓迎です。

4

1 に答える 1

0

Web アプリケーションを実行しました。問題はjarファイルの配置にありました。Web アプリの場合、Tomcat が jar を読み取って認識できるように、すべての jar を WEB-INF/lib ディレクトリ内に配置する必要があります。

管理者に質問を閉じるようお願いします。乾杯。

于 2015-02-06T06:22:19.280 に答える