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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何避免获取java.lang.NoClassDefFoundError:org / apache / commons / logging / LogFactory相关的知识,希望对你有一定的参考价值。

我有一个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:net.sf.上的net.sf.jasperreports.engine.util.JRLoader。(JRLoader.java:68)中的org / apache / commons / logging / LogFactory。 jasperreports.engine.JRPropertiesUtil.loadProperties(JRPropertiesUtil.java:99)at net.sf.jasperreports.engine.DefaultJasperReportsContext.initProperties(DefaultJasperReportsContext.java:94)at 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)在使用javax .swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)at javax.swing.Abst ractButton $ Handler.actionPerformed(AbstractButton.java:2318)在javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)在javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)在javax.swing.plaf.basic中.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)在java.awt.Component.processMouseEvent(Component.java:6134)在javax.swing.JComponent.processMouseEvent(JComponent.java:3265)在java.awt.Component.processEvent( Component.java:5899)java.awt.Container.processEvent(Container.java:2023)at java.awt.Component.dispatchEventImpl(Component.java:4501)at java.awt.Container.dispatchEventImpl(Container.java:2081) )java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301)的java.awt.Component.dispatchEvent(Component.java:4331)java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965)at java.awt .LightweightDispatcher.dispatchEvent(Container.java:3895)at java.awt.Container.dispatchEventImpl(Container.java:206 7)java.awt.Window.dispatchEventImpl(Window.java:2458)at java.awt.Component.dispatchEvent(Component.java:4331)at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)at java。位于java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)的awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)位于java.awt.EventDispatchThread.pumpEvents的java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) (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)是java .lang.ClassLoader.loadClass(ClassLoader.java:307)at sun.misc.Launcher $ AppClassLoader.loadC lass(Launcher.java:301)at java.lang.ClassLoader.loadClass(ClassLoader.java:252)at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)... 35更多

答案

需要将Commons Logging添加到类路径中。如果您正在使用常规Netbeans项目(而不是Netbeans中的Maven项目),请查看this SO questionthis article,了解如何将库添加到项目中。

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

以上是关于如何避免获取java.lang.NoClassDefFoundError:org / apache / commons / logging / LogFactory的主要内容,如果未能解决你的问题,请参考以下文章

“Ionic cordova build android”错误

当我在 Eclipse 中运行 hadoop 作业时出现异常

如何避免从 process.env 文件中获取错误数据?

如何避免在 Hibernate 中获取 javassist 惰性实体代理实例

C++ 字符串 - 如何避免获取无效指针?

如何正确设置 GET/POST 获取的标头以避免 CORS