簡體   English   中英

使用第三方.jar文件時的java.lang.NoClassDefFoundError

[英]java.lang.NoClassDefFoundError when using a third party .jar file

我正在使用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

您可能正在編譯Jasper jar ok,但在運行時該jar有自己的依賴項,您也應該包含它們。

根據你的堆棧跟蹤,你需要Apache Commons Digester 我可能會使用Maven構建,讓Maven(希望)為你解決這組依賴關系。 可以使用Jar搜索引擎來查找這些依賴項,但它們不會為您確定這些jar的匹配版本。

你的庫(Jasper?)似乎對另一個庫有(運行時)依賴。 意思是,它在執行時需要一些其他JAR存在於類路徑中。

缺少的類名是org/apache/commons/digester/Digester 因此,您可以猜測丟失的庫是commons-digester 確保Digester庫也可以在Classpath上使用。

我面臨同樣的問題,我只是添加commons-digester-2.0.jar並解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM