Ошибка определения класса для класса, развернутого в Websphere 6.0 - PullRequest
0 голосов
/ 27 апреля 2011

В Websphere 6.0 у меня развернуто веб-приложение «Project1».Я получаю следующую ошибку: - java.lang.NoClassDefFoundError: com.app.X на java.lang.Class.initialize (Class.java:318) на com.app.Y.invoke (Y.java:61)

где com.app.X и com.app.Y являются частью отдельных jar-файлов, представленных в каталоге \ WEB-INF \ lib.К вашему сведению, политика загрузки классов - ParentFirst / application.

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


спасибо Manglu и Bkail за ваш вклад.Но проблема заключалась в том, что jar, содержащий класс Y, был скомпилирован в версии java1.4 вместе с jar, содержащим класс X.Однако из-за неправильной проверки в нашей системе CVS кто-то скомпилировал jar, содержащий класс X, с другой версией java.Поэтому во время выполнения, когда загрузчик классов Y-класса пытался найти конкретную версию класса X, он не мог ее найти.Исходя из моего понимания, есть 4 причины, по которым мы можем получить ошибку noClassDefFound в среде J2EE / JAVA: - i) класс фактически отсутствует в пути к классам ii) класс присутствует, но не виден в иерархии загрузчика классов iii) класс присутствует, но он имеетдругая версия.iv) Как объяснено выше, класс присутствует, но возникают проблемы в процессе инициализации класса.

Что-нибудь еще вы хотите добавить?

Ответы [ 2 ]

2 голосов
/ 27 апреля 2011

Я подозреваю, что в своем методе <clinit> произошел сбой com.app.X, из-за чего JVM пометила его как плохое, и все посещения подпоследовательностей для ссылки на класс приведут к NoClassDefFoundError. 1.5 JVM содержат тег (initialization failure) в сообщении об исключении, но WAS 6.0 использует 1.4.2 JVM. Просмотрите журналы для com.app.X.<clinit>, чтобы найти реальную причину сбоя.

0 голосов
/ 28 апреля 2011

Попробуйте и предоставьте трассировку стека для людей, которые здесь помогут.

Как уже упоминалось, bkail выглядит так, как будто com.app.X дает сбой при инициализации, в результате чего вы получаете ошибку NCDF.

Развертывание его несколько раз не поможет, если вы не поймете, почему X терпит неудачу во время его инициализации.Проверьте, есть ли у него статические блоки инициализации.

Могут существовать и X, и Y, и загрузка X класс-загрузчиком, если X зависит от ABC, которого нет, может привести к NCDF для X.

HTH Manglu

...