Запуск JBoss 4.2 выбрасывает NoClassDefFoundError - PullRequest
1 голос
/ 18 мая 2011

У меня проблемы с запуском сервера JBoss 4.2.2 - он выдает следующее сообщение об ошибке (от org.jboss.kernel.plugins.dependency.AbstractKernelController):

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, я включил ведение журнала уровня TRACE для определенных классов, хотя все, что он мне говорит, это то, что он не может найти IndirectContainer (все эти строки взяты из org.jboss.mx.loading.LoadMgr3):

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}

Я использовал TextPad для поиска по всей структуре папок, включая .jars и т. Д., И нет ни одного упоминания IndirectContainer вне файлов журнала.

Я предполагаю, что зависимость библиотеки не удовлетворяется, но я не уверен, каким должен быть следующий шаг для диагностики этой проблемы. Есть идеи / предложения?

(работает на RHEL4)

Я бегу JBoss (MX MicroKernel) [4.2.2.GA (build: SVNTag=JBoss_4_2_2_GA date=200710221139)]

Я начал немного разбираться, поэтому я подключил отладчик и создал условную точку останова ("org.jboss.ejb3.interceptors.direct.IndirectContainer".equals(classname)) в конструкторе org.jboss.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.

Надеюсь, этого достаточно, чтобы кто-то мог распознать проблему.

1 Ответ

1 голос
/ 19 мая 2011

Я нашел решение после большой отладки и проверки исходного кода.

Путь к классу нашего сервера приложений включал jboss-ejb3-core-client.jar из JBoss 5.1.0.GA, чтобы он мог общаться с EJB, выставленными на JBoss5.1.0 appservers.В нашем classpath также есть jboss-ejb3-client.jar.Оба содержат класс org.jboss.ejb3.EJBContainer, но только класс в первом .jar реализует org.jboss.ejb3.interceptors.direct.IndirectContainer, которого у нас не было в нашем classpath.

В своем первоначальном вопросе я написал:

Насколько я вижу, в этом .jar нет упоминания об IndirectContainer.

... что было явно неправильно.

Поэтому я написал другой вопрос спрашиваю, есть ли какие-нибудь инструменты, которые могли бы идентифицировать это намного быстрее.Если нет, я напишу один.

...