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