Приложение Spring boot 2.1.x с зависимостью только от log4j2, запускается дважды

NoClassDefFoundError В Java

Определение:

  1. Java Virtual Machine не может найти определенный класс во время выполнения, который был доступен при компиляции время.
  2. Если во время компиляции класс присутствовал, но не доступен в пути Java-класса во время выполнения.

Примеры:

  1. Класс не находится в Classpath, нет уверенного способа узнать его, но много раз вы можете просто взглянуть на печать System.getproperty («java.classpath») и он будет печатать путь к классу оттуда, вы можете хотя бы получить представление о вашем фактическом пути к классам времени выполнения.
  2. Простой пример NoClassDefFoundError - класс принадлежит отсутствующему файлу JAR, или JAR не был добавлен в classpath или иногда Имя jar было изменено кем-то, как в моем случае, один из моих коллег изменил tibco.jar на tibco_v3.jar, и программа не работает с java.lang.NoClassDefFoundError, и мне было интересно, что случилось.
  3. Просто попытаться запустить w с явно выраженным параметром -classpath с классом classpath, который, по вашему мнению, будет работать, и если он работает, то это верный короткий признак того, что кто-то переопределяет java classpath.
  4. Проблема с правами на JAR-файл также может вызвать NoClassDefFoundError в Java.
  5. Typo on XML Configuration также может вызвать NoClassDefFoundError в Java.
  6. , когда ваш скомпилированный класс, который определен в пакете, не присутствует в одном пакете во время загрузки, как в случае JApplet он будет вызывать NoClassDefFoundError в Java.

Возможные решения:

  1. Класс недоступен в Java-классе.
  2. Если вы работая в среде J2EE, чем видимость класса среди нескольких Classloader также может вызвать java.lang.NoClassDefFoundError, см. примеры и сценарий для подробного обсуждения.
  3. Проверить на java.lang.ExceptionInInitializerError в вашем файле журнала. NoClassDefFoundError из-за сбоя статической инициализации довольно распространен.
  4. Поскольку NoClassDefFoundError является подклассом java.lang.LinkageError, он также может появиться, если некоторая его зависимость, например, родная библиотека, недоступна.
  5. Любой сценарий запуска переопределяет переменную среды Classpath.
  6. Возможно, вы запускаете свою программу с помощью команды jar, а класс не был определен в атрибуте ClassPath файла манифеста.

Ресурсы:

3 способа решения NoClassDefFoundError

java.lang.NoClassDefFoundError Шаблоны проблем

1
задан sonu131 16 January 2019 в 17:57
поделиться

1 ответ

Я думаю, вы должны установить для свойства аддитивность на вашем логгере значение false . В противном случае значение установлено в значение по умолчанию и приведет к нескольким операторам журнала.

В коде это будет выглядеть так:

logger.setadditivity(false);
0
ответ дан Nathan Wright 16 January 2019 в 17:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: