ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

使用JasperReports API在代码中得到了’java.lang.NoClassDefFoundError:org / apache / commons / logging / LogFact

2019-11-02 04:01:48  阅读:283  来源: 互联网

标签:noclassdeffounderror jasper-reports java


我正在开发一个简单的独立桌面应用程序,该应用程序将根据传递给程序的值生成报告.没有数据库使用情况.我已经使用iReport设计器设计了JasperReports报告,并添加了参数ID_NO和带有表达式$P {ID_NO}的文本字段

我可以成功预览报告,并查看期望的结果.但是我无法从Java应用程序生成报告并从那里传递参数ID_NO.这是我的代码:

public class MyReportViewer extends JFrame {

    public MyReportViewer(String fileName) {
        this(fileName,null);
    }

    public MyReportViewer(String fileName,HashMap<String, Object> parameter) {
        super("View Report");
        try {
            JasperPrint print = JasperFillManager.fillReport(fileName, parameter);
            JRViewer viewer = new JRViewer(print);

            Container c = getContentPane();
            c.add(viewer);
        } catch(Exception e) {
            e.printStackTrace();
        }

        setBounds(10, 10, 600,500);
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    }

    public static void main(String args[]) {
        HashMap<String, Object> param = new HashMap<String, Object>();
        param.put("ID_NO", "101-15-980");
        MyReportViewer viewer = new MyReportViewer("test.jasper", param);
        viewer.setVisible(true);
    }
}

该代码给出了一个例外

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at net.sf.jasperreports.engine.util.JRLoader.<clinit>(JRLoader.java:61)
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:267)
    at jspertest.MyReportViewer.<init>(MyReportViewer.java:37)
    at jspertest.MyReportViewer.main(MyReportViewer.java:60)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)

并且不运行.

请给我一个线索.我以前从未使用过JasperReports或任何类型的报告生成器.

编辑:

将jasperreports4.x.x / lib / ..中的所有库文件添加到项目中.现在,异常消失了.现在控制台说-

log4j:WARN No appenders could be found for logger (net.sf.jasperreports.extensions.ExtensionsEnvironment).
log4j:WARN Please initialize the log4j system properly.

一个小的弹出窗口说文档中没有页面.出现一个小窗口,其中没有报告.

解决方法:

您的异常与参数问题无关,看起来很不错.

看来您在类路径中缺少Apache Commons Logging.它在预览模式下运行,因为您的IDE确实具有正确的类路径.

标签:noclassdeffounderror,jasper-reports,java
来源: https://codeday.me/bug/20191102/1988612.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有