gpt4 book ai didi

java - 使用 JasperReports API 在代码中得到 'java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory`

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:24:27 25 4
gpt4 key购买 nike

我正在开发一个简单的独立桌面应用程序,它会根据传递给程序的值生成报告。没有数据库使用。我使用 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 确实具有正确的类路径。

关于java - 使用 JasperReports API 在代码中得到 'java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7888064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com