2011-05-18 100 views
1

我無法啓動的JBoss 4.2.2服務器 - 它是生產以下錯誤消息(來自org.jboss.kernel.plugins.dependency.AbstractKernelController):的JBoss 4.2啓動拋出的NoClassDefFoundError

Error installing to Described: name=WSDeployerHook_JAXWS_EJB3 state=Not Installed mode=Manual requiredState=Create 
java.lang.NoClassDefFoundError: org/jboss/ejb3/interceptors/direct/IndirectContainer 

通過在JBoss源代碼尋找,我已經接通某些類別跟蹤級別日誌記錄,但所有他所告訴我的是,它無法找到IndirectContainer(這些線路全部來自org.jboss.mx.loading.LoadMgr3):

Begin beginLoadTask, [email protected]{classname: org.jboss.ejb3.interceptors.direct.IndirectContainer, requestingThread: Thread[main,5,jboss], requestingClassLoader: [email protected]{ url=null ,addedOrder=2}, loadedClass: nullnull, loadOrder: 2147483647, loadException: null, threadTaskCount: 0, state: 0, #CCE: 0} 
End beginLoadTask, ClassNotFoundException 
Run failed with exception, [email protected]{classname: org.jboss.ejb3.EJBContainer, requestingThread: Thread[main,5,jboss], requestingClassLoader: [email protected]{ url=null ,addedOrder=2}, loadedClass: nullnull, loadOrder: 2147483647, loadException: java.lang.NoClassDefFoundError: org/jboss/ejb3/interceptors/direct/IndirectContainer, threadTaskCount: 0, state: 1, #CCE: 1} 
Notifying task of thread completion, loadTask:[email protected]{classname: org.jboss.ejb3.EJBContainer, requestingThread: Thread[main,5,jboss], requestingClassLoader: [email protected]{ url=null ,addedOrder=2}, loadedClass: nullnull, loadOrder: 2147483647, loadException: java.lang.NoClassDefFoundError: org/jboss/ejb3/interceptors/direct/IndirectContainer, threadTaskCount: 0, state: 1, #CCE: 1} 
End nextTask(0), [email protected]{classname: org.jboss.ejb3.EJBContainer, requestingThread: Thread[main,5,jboss], requestingClassLoader: [email protected]{ url=null ,addedOrder=2}, loadedClass: nullnull, loadOrder: 2147483647, loadException: java.lang.NoClassDefFoundError: org/jboss/ejb3/interceptors/direct/IndirectContainer, threadTaskCount: 0, state: 4, #CCE: 1} 
Begin endLoadTask, [email protected]{classname: org.jboss.ejb3.EJBContainer, requestingThread: Thread[main,5,jboss], requestingClassLoader: [email protected]{ url=null ,addedOrder=2}, loadedClass: nullnull, loadOrder: 2147483647, loadException: java.lang.NoClassDefFoundError: org/jboss/ejb3/interceptors/direct/IndirectContainer, threadTaskCount: 0, state: 4, #CCE: 1} 
registerLoaderThread, [email protected]{ url=file:/var/data/applications/jboss/server/jbossgpa1/deploy/jboss-bean.deployer/ ,addedOrder=5}, t=Thread[main,5,jboss], prevT=null 
Begin beginLoadTask, [email protected]{classname: org.jboss.util.JBossStringBuilder, requestingThread: Thread[main,5,jboss], requestingClassLoader: [email protected]{ url=file:/var/data/applications/jboss/server/jbossgpa1/deploy/jboss-bean.deployer/ ,addedOrder=5}, loadedClass: nullnull, loadOrder: 2147483647, loadException: null, threadTaskCount: 0, state: 0, #CCE: 0} 
scheduleTask(1), created subtask: {t=Thread[main,5,jboss], [email protected]{ url=file:/var/data/applications/jboss/server/jbossgpa1/deploy/jboss-bean.deployer/ ,addedOrder=5}, name=org.jboss.util.JBossStringBuilder, requestingThread=Thread[main,5,jboss], order=5, releaseInNextTask=false} 

我用TextPad搜索包括整個文件夾結構.jars等並且在日誌文件之外沒有提及IndirectContainer

我在猜測圖書館的依賴沒有得到滿足,但我不確定下一步應該怎樣診斷這個問題。任何想法/建議?

(RHEL4上運行)

我跑JBoss (MX MicroKernel) [4.2.2.GA (build: SVNTag=JBoss_4_2_2_GA date=200710221139)]

我開始有點絕望,所以我連接調試器,創建了org.jboss的構造條件斷點("org.jboss.ejb3.interceptors.direct.IndirectContainer".equals(classname))。 mx.loading.ClassLoadingTask。當斷點被擊中,我就背下來的堆找到IndirectContainer的最早提及:

earliest mention of IndirectContainer

在左側可以看到(我希望 - 這不是找我的小屏幕上非常清晰)在調用UnifiedClassloader3.classLoadInternal()下面是一個本地電話(這是我看不到任何價值),再有就是UnifiedClassloader3.defineClass()呼叫:

jboss-ejb3-core-client.jar

在這個調用,您可以看到突出(藍色,右下角)jboss-ejb3-core-client.jar - 我並沒有使用類加載器,但我假設決定實例化ClassLoadingTask IndirectContainer是因爲此.jar文件的內容。

據我所知,在這個.jar中沒有提及IndirectContainer

希望這是足夠的細節讓人們認識到這個問題。

+0

哪個版本的JBoss 4,具體是? – skaffman 2011-05-18 10:43:13

+0

@skaffman - 我已經更新了這個問題 – Rich 2011-05-18 10:49:53

回答

1

我經過很多調試和檢查源代碼後發現瞭解決方案。

我們的應用程序服務器的類路徑包括來自JBoss 5.1.0.GA的jboss-ejb3-core-client.jar,以便它可以與暴露在JBoss5.1.0應用服務器上的EJB對話。我們的類路徑中也有jboss-ejb3-client.jar。兩者都包含類org.jboss.ejb3.EJBContainer,但只有第一個.jar中的類實現了org.jboss.ejb3.interceptors.direct.IndirectContainer,這在我們的類路徑中沒有。

在我原來的問題,我寫道:

至於我可以看到有這 的.jar沒有提及 的IndirectContainer。

......這顯然是錯誤的。

因此,我寫了another question詢問是否有任何工具可以更快地識別出這些。如果沒有,我會寫一個。

相關問題