如何避免获取java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory

如何避免获取java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory,java,jasper-reports,Java,Jasper Reports,我有一个NetBeans项目,我想在其中设计jasper报告,当我通过JasperFillManager.fillReport填写报告时,我发现了一条错误消息 我如何解决这个问题 我使用了iReport 5.0.0和JasperReports库5.1.0 我的代码描述如下 try { String reportName = "./rptJobList.jasper"; InputStream is = new FileInputStream(reportName); Cl

我有一个NetBeans项目,我想在其中设计jasper报告,当我通过
JasperFillManager.fillReport
填写报告时,我发现了一条错误消息

我如何解决这个问题

我使用了iReport 5.0.0和JasperReports库5.1.0

我的代码描述如下

try {
    String reportName = "./rptJobList.jasper";
    InputStream is = new FileInputStream(reportName);
    Class.forName("com.mysql.jdbc.Driver");
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/js001?user=root&password=admin");
    JasperPrint jasperPrint = JasperFillManager.fillReport(is, null, con);
    JasperViewer jv = new JasperViewer(jasperPrint);
    jv.setVisible(true);
} catch (Exception ex) {
}
例外情况是:

线程“AWT-EventQueue-0”java.lang.NoClassDefFoundError中出现异常: org/apache/commons/logging/LogFactory位于 net.sf.jasperreports.engine.util.JRLoader.(JRLoader.java:68) 在 net.sf.jasperreports.engine.JRPropertiesUtil.loadProperties(JRPropertiesUtil.java:99) 在 net.sf.jasperreports.engine.DefaultJasperReportsContext.initProperties(DefaultJasperReportsContext.java:94) 在 net.sf.jasperreports.engine.DefaultJasperReportsContext。(DefaultJasperReportsContext.java:71) 在 net.sf.jasperreports.engine.DefaultJasperReportsContext。(DefaultJasperReportsContext.java:59) 在 net.sf.jasperreports.engine.JasperFillManager.getDefaultInstance(JasperFillManager.java:85) 在 net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:824) 在job.NewClass.jButton2ActionPerformed(NewClass.java:64)处 job.NewClass.access$000(NewClass.java:21) job.NewClass$1.actionPerformed(NewClass.java:42)在 fireActionPerformed(AbstractButton.java:1995) 在 javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) 在 fireActionPerformed(DefaultButtonModel.java:387) 在 setPressed(DefaultButtonModel.java:242) 在 javax.swing.plaf.basic.basicButtoListener.mouseReleased(basicButtoListener.java:236) 位于java.awt.Component.ProcessMouseeEvent(Component.java:6134) javax.swing.JComponent.ProcessMouseeEvent(JComponent.java:3265)位于 java.awt.Component.processEvent(Component.java:5899)位于 java.awt.Container.processEvent(Container.java:2023)位于 dispatchEventImpl(Component.java:4501)位于 dispatchEventImpl(Container.java:2081)位于 dispatchEvent(Component.java:4331)位于 awt.LightweightDispatcher.RetargetMouseeEvent(Container.java:4301) 在 java.awt.LightweightDispatcher.ProcessMouseeEvent(Container.java:3965) 位于java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895) 位于java.awt.Container.dispatchEventImpl(Container.java:2067) dispatchEventImpl(Window.java:2458)位于 dispatchEvent(Component.java:4331)位于 dispatchEvent(EventQueue.java:599)位于 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 在 java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:184) 在 java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:174) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 在java.awt.EventDispatchThread.run处(EventDispatchThread.java:122) 原因:java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory位于 java.net.URLClassLoader$1.run(URLClassLoader.java:200)在 java.security.AccessController.doPrivileged(本机方法)位于 java.net.URLClassLoader.findClass(URLClassLoader.java:188)位于 loadClass(ClassLoader.java:307)位于 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)位于 loadClass(ClassLoader.java:252)位于 java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)。。。35 更多

需要添加到类路径。如果您在一个常规的Netbeans项目中工作(而不是在Netbeans中的Maven项目中),请查看或解释如何向项目中添加库


另一方面,如果您正在使用Netbeans处理Maven项目,则必须将Commons日志作为依赖项添加。如何做到这一点是可以找到的——基本上,只需右键单击项目树中的“库”节点,添加依赖项,输入人工制品详细信息,或使用内置搜索助手在Maven存储库中找到正确的人工制品。

了解您收到的错误消息将非常有帮助——我看到一个空的catch块,您应该在那里做一些事情:打印日志,甚至可以在调试器中放置一个断点并查看消息。很抱歉,缺少异常,请立即检查。当然可能重复,但由于JasperReports需要Commons日志记录(很明显,只需跟踪堆栈跟踪),您还需要包含该库。Commons Logging可能还需要其他库(ifo可能可以在他们的网站上找到),或者只是添加Commons Logging,再试一次,看看缺少什么,等等,直到你的程序运行。我面临同样的问题。我在我的netbean项目中添加了commons-logging-1.1.1.jar。但是它不起作用。@Cristyg我强烈建议你将你的问题表述成一个新问题,尽可能多地给出细节,包括你得到的stacktrace、构建环境、java版本等。尽管我认为我的方法应该会带来一个解决方案,但我必须指出,原始海报从未接受过答案,因此,没有办法知道这个答案是否有用。