Всего несколько дней назад я встретил такой же вопрос, как и ваш.Весь код хорошо работает на моей локальной машине, но получается ошибка (noclassdeffound & initialize).Поэтому я публикую свое решение, но я не знаю почему, я просто выдвигаю возможность.Я надеюсь, что кто-то знает, это объяснит. @ Джон Винт Во-первых, я покажу вам мою проблему.Мой код имеет статическую переменную и статический блок оба.Когда я впервые столкнулся с этой проблемой, я попробовал решение Джона Винта и попытался поймать исключение.Однако я ничего не поймал.Поэтому я подумал, что это потому, что статические переменные (но теперь я знаю, что это одно и то же) и до сих пор ничего не нашли.Итак, я пытаюсь найти разницу между машиной Linux и моим компьютером.Затем я обнаружил, что эта проблема возникает только тогда, когда несколько потоков выполняются в одном процессе (кстати, на машине linux есть два ядра и два процесса).Это означает, что если в одном и том же процессе выполняются две задачи (обе используют код со статическим блоком или переменными), это не так, но если они выполняются в разных процессах, обе они в порядке.В машине Linux я использую
mvn -U clean test -Dtest=path
для запуска задачи, и потому что моя статическая переменная должна запускать контейнер (или, может быть, вы инициализируете новый загрузчик классов), поэтому он будет оставаться до остановки jvm,и jvm останавливается только тогда, когда все задачи в одном процессе останавливаются.Каждая задача запускает новый контейнер (или загрузчик классов), и это делает jvm запутанным.В результате происходит ошибка.Итак, как это решить?Мое решение состоит в том, чтобы добавить новую команду в команду maven и перевести все задачи в один и тот же контейнер.
-Dxxx.version=xxxxx #sorry can't post more
Возможно, вы уже решили эту проблему, но все же надеетесь, что это поможет другим, кто встретитта же проблема.