JBoss 4.2启动抛出NoClassDefFoundError

JBoss 4.2启动抛出NoClassDefFoundError,jboss,classloader,noclassdeffounderror,jboss-4.2.x,Jboss,Classloader,Noclassdeffounderror,Jboss 4.2.x,启动JBoss 4.2.2服务器时遇到问题-它产生以下错误消息(来自org.JBoss.kernel.plugins.dependency.AbstractKernelController): 通过查看JBoss源代码,我打开了某些类的跟踪级别日志记录,尽管它告诉我的是它找不到间接容器(这些行都来自org.JBoss.mx.loading.LoadMgr3): 我使用TextPad搜索了整个文件夹结构,包括.jars等,在日志文件之外没有提到IndirectContainer 我猜库的依赖性没有

启动JBoss 4.2.2服务器时遇到问题-它产生以下错误消息(来自
org.JBoss.kernel.plugins.dependency.AbstractKernelController
):

通过查看JBoss源代码,我打开了某些类的跟踪级别日志记录,尽管它告诉我的是它找不到
间接容器
(这些行都来自
org.JBoss.mx.loading.LoadMgr3
):

我使用TextPad搜索了整个文件夹结构,包括.jars等,在日志文件之外没有提到
IndirectContainer

我猜库的依赖性没有得到满足,但我不确定下一步应该做什么来诊断这个问题。有什么想法/建议吗

(在RHEL4上运行)

我正在运行JBoss(MX微内核)[4.2.2.GA(build:SVNTag=JBoss_4_2_2_GA date=200710221139)]

我开始有点绝望,所以我连接了调试器,并在org.jboss.mx.loading.ClassLoadingTask的构造函数上创建了一个条件断点(
“org.jboss.ejb3.interceptors.direct.IndirectContainer”.equals(classname)
)。当遇到断点时,我返回堆栈,查找最早提到的
IndirectContainer

在左侧,您可以看到(我希望-在我的小屏幕上看起来不是很清楚)对
UnifiedClassloader3.classLoadInternal()
的调用下面是一个本机调用(我看不到的任何值),然后是对
UnifiedClassloader3.defineClass()
的调用:

在这个调用中,您可以看到高亮显示的(蓝色,右下角)
jboss-ejb3-core-client.jar
——我不太使用类加载器,但我假设为
IndirectContainer
实例化类加载器任务的决定是因为这个.jar文件的内容而做出的

据我所知,在这个.jar中没有提到
IndirectContainer


希望这足够详细,有人能认识到这个问题。

在对源代码进行了大量调试和检查之后,我找到了解决方案

我们的appserver的类路径包括jboss 5.1.0.GA中的
jboss-ejb3-core-client.jar
,这样它就可以与JBoss5.1.0 appserver上公开的EJB通信。在我们的类路径中还有
jboss-ejb3-client.jar
。两者都包含类
org.jboss.ejb3.EJBContainer
,但只有第一个.jar中的类实现了
org.jboss.ejb3.interceptors.direct.IndirectContainer
,这是我们在类路径中没有的

在我最初的问题中,我写道:

据我所知,没有 在本文中提到间接容器 jar先生

…这显然是错误的


因此,我写信询问是否有任何工具可以更快地识别这一点。如果没有,我就写一个。

在对源代码进行了大量调试和检查之后,我找到了解决方案

我们的appserver的类路径包括jboss 5.1.0.GA中的
jboss-ejb3-core-client.jar
,这样它就可以与JBoss5.1.0 appserver上公开的EJB通信。在我们的类路径中还有
jboss-ejb3-client.jar
。两者都包含类
org.jboss.ejb3.EJBContainer
,但只有第一个.jar中的类实现了
org.jboss.ejb3.interceptors.direct.IndirectContainer
,这是我们在类路径中没有的

在我最初的问题中,我写道:

据我所知,没有 在本文中提到间接容器 jar先生

…这显然是错误的


因此,我写信询问是否有任何工具可以更快地识别这一点。如果没有,我会写一个。

具体是哪个版本的JBoss4?@skaffman-我更新了问题具体是哪个版本的JBoss4?@skaffman-我更新了问题
Error installing to Described: name=WSDeployerHook_JAXWS_EJB3 state=Not Installed mode=Manual requiredState=Create
java.lang.NoClassDefFoundError: org/jboss/ejb3/interceptors/direct/IndirectContainer
Begin beginLoadTask, task=org.jboss.mx.loading.ClassLoadingTask@c8aeb3{classname: org.jboss.ejb3.interceptors.direct.IndirectContainer, requestingThread: Thread[main,5,jboss], requestingClassLoader: org.jboss.mx.loading.UnifiedClassLoader3@16925b0{ url=null ,addedOrder=2}, loadedClass: nullnull, loadOrder: 2147483647, loadException: null, threadTaskCount: 0, state: 0, #CCE: 0}
End beginLoadTask, ClassNotFoundException
Run failed with exception, loadTask=org.jboss.mx.loading.ClassLoadingTask@10e468f{classname: org.jboss.ejb3.EJBContainer, requestingThread: Thread[main,5,jboss], requestingClassLoader: org.jboss.mx.loading.UnifiedClassLoader3@16925b0{ 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:org.jboss.mx.loading.ClassLoadingTask@10e468f{classname: org.jboss.ejb3.EJBContainer, requestingThread: Thread[main,5,jboss], requestingClassLoader: org.jboss.mx.loading.UnifiedClassLoader3@16925b0{ 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), loadTask=org.jboss.mx.loading.ClassLoadingTask@10e468f{classname: org.jboss.ejb3.EJBContainer, requestingThread: Thread[main,5,jboss], requestingClassLoader: org.jboss.mx.loading.UnifiedClassLoader3@16925b0{ 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, task=org.jboss.mx.loading.ClassLoadingTask@10e468f{classname: org.jboss.ejb3.EJBContainer, requestingThread: Thread[main,5,jboss], requestingClassLoader: org.jboss.mx.loading.UnifiedClassLoader3@16925b0{ 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, ucl=org.jboss.mx.loading.UnifiedClassLoader3@56182f{ url=file:/var/data/applications/jboss/server/jbossgpa1/deploy/jboss-bean.deployer/ ,addedOrder=5}, t=Thread[main,5,jboss], prevT=null
Begin beginLoadTask, task=org.jboss.mx.loading.ClassLoadingTask@159d10{classname: org.jboss.util.JBossStringBuilder, requestingThread: Thread[main,5,jboss], requestingClassLoader: org.jboss.mx.loading.UnifiedClassLoader3@56182f{ 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], ucl=org.jboss.mx.loading.UnifiedClassLoader3@56182f{ 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}