2013-08-28 72 views
0

我在我的應用程序中使用了Apache POI庫並上傳到JBoss AS 7.1。它成功地部署了jar,並且我能夠運行應用程序而沒有任何錯誤/異常,如果我將其部署到jboss-5.0.1.GA中,那麼它也是一樣的jar。它拋出以下異常。NoClassDefFoundError在運行時

 java.lang.NoClassDefFoundError: org/dom4j/DocumentException 
at org.apache.poi.openxml4j.opc.OPCPackage.init(OPCPackage.java:154) 
at org.apache.poi.openxml4j.opc.OPCPackage.<init>(OPCPackage.java:141) 
at org.apache.poi.openxml4j.opc.Package.<init>(Package.java:54) 
at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:82) 
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:267) 
at org.apache.poi.util.PackageHelper.open(PackageHelper.java:39) 
at org.apache.poi.xwpf.usermodel.XWPFDocument.<init>(XWPFDocument.java:120) 
... 

Caused by: java.lang.ClassNotFoundException: org.dom4j.DocumentException 
at org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:738) 
at org.apache.felix.framework.ModuleImpl.access$100(ModuleImpl.java:60) 
at org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1650) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:252) 
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) 
... 19 more 

如果我添加dom4j罐子。它會拋出一個新的異常,即

java.lang.ClassCastException: org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory 

會是什麼問題? JBoss5加載類別與JBoss7不同嗎?我在這裏錯過了什麼?

注:我的應用程序是一個獨立的Java應用程序

+1

顯然荒謬的'ClassCastException'確實表明你有兩個不同的類加載器加載了相同的類。發生這種情況時,這些類具有相同的完全限定名稱,但就JVM而言不兼容。這可能是JBOSS加載一個沒有定義'DocumentException'的舊dom4j。 –

+0

@JimGarrison有什麼可以解決的問題 – MaheshVarma

+1

我已經有一段時間了,因爲我不得不去調試類加載器的問題,而且這也不是一件令人愉快的任務。查看JBOSS是否有辦法將dom4j放入應用程序的類路徑中,而不是全局類路徑。 –

回答

0

或許你可以嘗試刪除類路徑JRE在你的eclipse,重新添加JRE到你buildpath並重新啓動Eclipse和確保您的Java編譯器是6。並部署你的osgi plugin。並重新啓動JBoss。

注意:之前你部署osgi plugin清除osgi-cache

相關問題