Всього кілька днів тому я зустрів таке саме питання, як і ваше. Весь код працює добре на моїй локальній машині, але виявляється помилка (noclassdeffound & ініціалізувати). Тож я розміщую своє рішення, але не знаю чому, я просто просуваю можливість. Сподіваюся, хтось знає, що це пояснить. @ John Vint По-перше, я покажу вам свою проблему. Мій код має статичну змінну і статичний блок. Коли я вперше зіткнувся з цією проблемою, я спробував рішення Джона Вінта і спробував зловити виняток. Однак я нічого не зловив. Тому я подумав, що це тому, що статична змінна (але тепер я знаю, що вони однакові) і все одно нічого не знайшла. Отже, я намагаюся знайти різницю між машиною Linux та моїм комп’ютером. Потім я виявив, що ця проблема трапляється лише тоді, коли в одному процесі працює кілька потоків (До речі, машина Linux має подвійні ядра та подвійні процеси). Це означає, що якщо в одному і тому ж процесі виконуються дві задачі (обидва використовують код, у яких є статичний блок або змінні), це піде не так, але якщо вони працюють в різних процесах, обидва вони в порядку. У машині Linux я використовую
mvn -U clean test -Dtest=path
запустити завдання, і оскільки моя статична змінна полягає у запуску контейнера (або, можливо, ви ініціалізуєте новий завантажувач класів), він залишатиметься до тих пір, поки jvm не зупиниться, а jvm зупиняється лише тоді, коли всі завдання в одному процесі зупиняються. Кожне завдання запускатиме новий контейнер (або завантажувач класів), і це робить jvm плутаним. В результаті трапляється помилка. Отже, як це вирішити? Моє рішення - додати нову команду до команди maven і змусити кожне завдання перейти в один контейнер.
-Dxxx.version=xxxxx #sorry can't post more
Можливо, ви вже вирішили цю проблему, але все ж сподіваєтесь, що вона допоможе іншим, хто зустрінеться з тією ж проблемою.