«Ошибка NoClassDefFoundError: Не удалось инициализировать class»

Когда я запускаю свой проект, я получаю многочисленные результаты этой ошибки:

 9 сентября 2009 г. 8:22:23 org.apache.catalina.core.StandardWrapperValve вызывает SEVERE: Servlet.service () для сервлета Джерси бросил исключение java.lang.NoClassDefFoundError: Не удалось инициализировать class SpringFactory на com.point2.prospect. persistence.hibernate.HibernateTransactionInterceptor.doFilter (HibernateTrans actionInterceptor.java:17) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:235) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java : 206) на com.point2.prospect.restapi.ServerErrorInterceptor.doFilter (ServerErrorInterceptor.java:27) на org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:235) на org.apache.catalina.core. ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) на org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:233) на org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:191) на или  g.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:128) в org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:102) на org.apache.catalina.core.StandardEngineValve.invoke ( StandardEngineValve.java:109) на org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:286) на org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:845) на org.apache.coyote .http11.Http11Protocol $ Http11ConnectionHandler.process (Http11Protocol.java:583) на org.apache.tomcat.util.net.JIoEndpoint $ Worker.run (JIoEndpoint.java:447) в java.lang.Thread.run (Thread.java : 619) 

Я замечаю, что эта проблема имеет образец, который задают во всем Интернете, но без реальных ответов. Что является общей причиной такого рода ошибок?

Ошибка NoClassDefFound является туманной ошибкой и часто скрывает более серьезную проблему. Это не то же самое, что ClassNotFoundException (которое бросается, когда class просто отсутствует).

NoClassDefFound может указывать на то, что class не существует, как указывают javadocs, но его обычно бросают, когда после того, как загрузчик classов загрузил байты для classа и называет их «defineClass». Также тщательно проверьте свою полную трассировку стека для других подсказок или возможных «причин» исключений (хотя ваша конкретная обратная трассировка не показывает).

Первое, что нужно посмотреть, когда вы получаете NoClassDefFoundError, – это статические биты вашего classа, то есть любая инициализация, которая происходит во время определения classа. Если это не удастся, он выкинет NoClassDefFoundError – предполагается, что он выкинет ExceptionInInitializerError и укажет детали проблемы, но, по моему опыту, они редки. Он будет выполнять только ExceptionInInitializerError при первом попытке определить class, после чего он просто выбросит NoClassDefFound. Поэтому посмотрите на более ранние журналы.

Поэтому я бы предложил посмотреть код в этой строке HibernateTransactionInterceptor и посмотреть, что он требует. Похоже, что он не может определить class SpringFactory. Поэтому, возможно, проверьте код инициализации этого classа, который может помочь. Если вы можете отладить его, остановите его на последней строке выше (17) и отлаживайте, чтобы попытаться найти точную строку, вызывающую исключение. Также проверьте выше в журнале, если вам очень повезло, может быть ExceptionInInitializerError.

Вам не хватает необходимого определения classа; обычно вызванный тем, что JAR не находится в classpath.

Из J2SE API :

Открытый class NoClassDefFoundError расширяет LinkageError

Брошено, если Java Virtual Machine или экземпляр ClassLoader пытается загрузить определение classа (как часть обычного вызова метода или как часть создания нового экземпляра с использованием нового выражения), и определение classа не может быть найдено.

Определение classа поиска было выполнено, когда исполняемый class был скомпилирован, но определение больше не может быть найдено.

Я столкнулся с той же проблемой, потому что библиотека jar была скопирована другим пользователем Linux (root), а зарегистрированный пользователь (процесс) не имел достаточных привилегий для чтения содержимого файла jar.

Понял, что я использовал OpenJDK, когда увидел эту ошибку. Исправлено, как только я установил Oracle JDK.

  • Что означает «фатальная ошибка: неожиданно найденная нуль при разворачивании необязательного значения»?
  • Puzzling Enumerable.Cast InvalidCastException
  • Исключение SQLite: SQLite Занято
  • Бросок или попытка + улов
  • Показывать номер строки в обработке исключений
  • Который, и почему, вы предпочитаете исключения или коды возврата?
  • Должен ли я получать пользовательские исключения из Exception или ApplicationException в .NET?
  • В C #, как я могу rethrow InnerException без потери трассировки стека?
  • java.sql.SQLException: Доступ запрещен для пользователя 'root' @ 'localhost' (с использованием пароля: YES)
  • Насколько дороги исключения в C #?
  • Java: глобальный обработчик исключений
  • Interesting Posts

    Какую команду следует использовать для спящего компьютера (не спящего режима)?

    RegEx для разделения camelCase или TitleCase (расширенный)

    Есть ли приложение Windows или простой способ создания сценариев, чтобы убедить окна завершить работу после завершения процесса?

    scanf Пропуск

    Как заставить ThreadPoolExecutor увеличить streamи до max перед очередью?

    Как я могу обнаружить «путь» встроенного ресурса?

    Ms word 2016 – как проверить, выделен ли текст или нет

    Как надолго «переименовать» процесс в Mac OS X (или iOS и т. Д.)?

    Есть ли хорошие полезные учебные пособия UIScrollView в сети?

    Vlookup для копирования цвета ячейки – Excel VBA

    Поддержание сеанса в android (приложение остается аутентифицированным на стороне сервера)

    Есть ли способ изменить цвет точек индикатора страницы

    pageLoadTimeout в Selenium не работает

    Применение инсульта к текстовому блоку в WPF

    Экран печати для просмотра в Windows 8

    Давайте будем гением компьютера.