2013-02-06 27 views
1

我正在使用NetBeans。我有一个简单的项目,它以一种奇特的格式打印一些作为参数发送的数据。 这是抛出异常的代码:使用第三方.jar文件时发生java.lang.NoClassDefFoundError

 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); 

每当创建碧玉类这些抛出异常。 我也试过System.getProperty(“java.class.path”),它包含“jasperreports-5.0.1.jar”文件。 我在做什么错?我知道这些异常会在编译时可用的时候抛出,但不会在运行时抛出。但是jar就在那里!

请求的堆栈跟踪:

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

你也可以粘贴stacktrace。 –

+0

帖子栈跟踪 – Atrix1987

回答

3

您可以编译针对碧玉罐子确定,但在那个罐子有它自己的依赖,你应该包括那些太运行。

根据您的堆栈跟踪,您需要Apache Commons Digester。我可能会使用Maven构建,并让Maven(希望)为您解决一系列依赖关系。您可以使用Jar search engine来查找这些依赖关系,但它们不会为您确定这些罐子的匹配版本。

+0

我正在试试这个!非常感谢!! – Alvaro

+0

我*怀疑*你会发现几个更多的jar文件丢失,但上面给你足够的信息来解决这个,希望 –

+0

它呢!非常感谢 !!我有一个2天的截止日期,我刚开始使用java开发 – Alvaro

1

您的库(Jasper?)似乎对另一个库具有(运行时)依赖关系。 含义,执行时需要一些其他JAR存在于类路径中。

缺少的类名是org/apache/commons/digester/Digester。因此你可以猜测缺失的库是commons-digester。确保Digester库也可用于Classpath。

+0

我正在尝试这个!非常感谢!!对不起,如果答案很明显.. – Alvaro

0

我面临同样的问题,我只是添加公共沼气池-2.0.jar和问题得到解决。

相关问题