Spring Служба загрузки REST - бросает java.lang.NoClassDefFoundError: org/apache/tomcat/util/ExceptionUtils

Во время разработки служба REST (Spring Boot 1.1.18) все, похоже, прошла нормально, но по мере выполнения различных тестов производительности и нагрузки служба остановилась на ответ со следующей ошибкой:

org.apache.tomcat.util.net.NioEndpoint log - 
java.lang.NoClassDefFoundError: org/apache/tomcat/util/ExceptionUtils
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:711) ~[tomcat-embed-core-7.0.55.jar!/:7.0.55]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1736) [tomcat-embed-core-7.0.55.jar!/:7.0.55]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1695) [tomcat-embed-core-7.0.55.jar!/:7.0.55]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_55]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_55]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-7.0.55.jar!/:7.0.55]
    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_55]

Тестирование охватывает этот рабочий процесс:

  • 1) login
  • 2) получить информацию из базы данных
  • 3) анализирует информацию из файла (находится на хосте службы)
  • шаг 2) и 3) повторяются 2000 раз с 5 потоками

Служба не разбилась полностью, она по-прежнему доступна через JMX, но не отвечает на HTTP-запросы.

Я ищу причину, но не повезло.

UPDATE:

Я добавил JAVA_OPTS для кучи, настройки стека и постоянного размера, и теперь сервис стабилен и работает намного лучше.

-Xmx768m -Xms512m -Xss4m  -XX:NewSize=256m -XX:MaxNewSize=256m -XX:MaxPermSize=128m -XX:PermSize=128m

Это здорово, но почему?

UPDATE:

Ничего не помогает, ошибка все еще сохраняется, также с Sprint Boot 1.2.0

Ответ 1

Вы когда-нибудь запускали "gradle clean" или "mvn clean" в каталоге исходного кода, который мог бы удалить жирную фразу, сгенерированную при загрузке spring, она должна быть основной причиной исключения. Поскольку запущенный jvm не может найти файл класса, который был удален.

Ответ 2

Если вы переупаковываете жирный файл spring -boot JAR, позиции начала субарков меняются. Это происходит, когда вы меняете что-то в файле свойств /xml в своей толстой банке. Вы делаете это, когда вы редактируете что-то в файле конфигурации с помощью приложения mc (mcedit). Поместите свои файлы конфигурации вне жировой банки.