我正在使用NetBeans。我有一个简单的项目,它以花哨的格式打印一些作为参数发送的数据。 这是抛出异常的代码:
JasperDesign design = JRXmlLoader.load("Certificate.jrxml");
JasperReport report = JasperCompileManager.compileReport(design);
JasperPrint print = JasperFillManager.fillReport(report, new HashMap(), new ClientList(args).getClients());
JPanel panel= new JRViewer(print);
每当创建Jasper类时,都会抛出这些异常。 我还尝试了System.getProperty(“java.class.path”),它包含了“jasperreports-5.0.1.jar”文件。 我究竟做错了什么?我知道每当一个类在编译时可用时抛出这些异常,但不会在运行时抛出..但jar就在那里!
请求Stacktrace:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester
at certificado.Certificado.main(Certificado.java:31)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.digester.Digester
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 1 more
Java Result: 1
答案 0 :(得分:3)
您可能正在编译Jasper jar,但在运行时该jar有自己的依赖项,您也应该包含它们。
根据您的堆栈跟踪,您需要Apache Commons Digester。我可能会使用Maven构建,让Maven(希望)为你解决这组依赖关系。您可以使用Jar search engine来查找这些依赖项,但它们不会为您确定这些jar的匹配版本。
答案 1 :(得分:1)
你的库(Jasper?)似乎对另一个库有(运行时)依赖。 意思是,它在执行时需要一些其他JAR存在于类路径中。
缺少的班级名称为org/apache/commons/digester/Digester
。因此,您可以猜测丢失的库是commons-digester
。确保Digester库也可用于Classpath。
答案 2 :(得分:0)
我遇到同样的问题,我只是添加 commons-digester-2.0.jar ,问题就解决了。