2011-05-18 109 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询问是否有任何工具可以更快地识别出这些。如果没有,我会写一个。

相关问题