[英]Not able to use third party jar in hadoop 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.