【问题标题】:Error Compiling Report: java.lang.NoClassDefFoundError: javax/servlet/ServletOutputStream错误编译报告:java.lang.NoClassDefFoundError: javax/servlet/ServletOutputStream
【发布时间】:2014-02-14 23:34:48
【问题描述】:

我在编译时遇到错误报告错误是:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: javax/servlet/ServletOutputStream

这是代码:

Map parameter = new HashMap();
parameter.put("customerId", notification_table.getValueAt(r, 0).toString());
ReportV sd = new ReportV();
sd.showReport(parameter);

这是我使用的类:

import java.sql.*;
import java.util.Map;
import javax.swing.*;

import static javax.swing.JFrame.EXIT_ON_CLOSE;

import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.swing.JRViewer;

public class ReportV {

    Connection conn = null;

    void showReport(Map parameters) {
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            conn = DriverManager.getConnection("jdbc:odbc:pcn");
            JasperReport report = JasperCompileManager.compileReport("recipt.jrxml");
            JasperPrint print = JasperFillManager.fillReport(report, parameters, conn);
            JRViewer viewer = new JRViewer(print);
            viewer.setOpaque(true);
            viewer.setVisible(true);
            //make your JFrame visible
            this.add(viewer);
            this.setSize(300, 200);
            this.setVisible(true);
            this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        } catch (Exception ex) {
            System.out.println("CAUSE: " + ex.getCause());
            System.out.println("MESSAGE" + ex.getMessage());
            System.out.println("LOCAL MESSAGE" + ex.getLocalizedMessage());
            ex.printStackTrace();
        }
    }
}

【问题讨论】:

    标签: java jasper-reports noclassdeffounderror


    【解决方案1】:

    您尚未导入 ServletOutputStream 类。

    import javax.servlet.ServletOutputStream;
    

    我相信这是 Java EE 的一部分,因此除了标准的 java jdk 之外,您还需要在类路径中使用该库。

    【讨论】:

    • 无法编译的源代码 - 包 javax.servlet 不存在
    • 因为它不包含在标准 jdk 中。你需要 Java EE 来处理 servlet 的东西。
    • 我已经为此下载了库,但问题没有解决
    • 你在使用 Maven 吗?您可能想从 maven Central 中提取以下包。 GroupId:javax.servlet ArtifactId:servlet-api 版本:2.5 类型:jar 范围:编译
    • NetBeans 是一个 IDE。 Maven 是一个构建管理工具。我猜你正在使用 Ant 作为你的构建管理工具。无论如何,正如其他人提到的那样。您将需要使用 J2EE 库来获取 ServletOutputStream 类。
    猜你喜欢
    • 1970-01-01
    • 2021-10-20
    • 2012-02-09
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 2023-04-08
    • 2012-09-30
    相关资源
    最近更新 更多