2013-02-06 60 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和問題得到解決。

相關問題