Hace solo unos días, me encontré con la misma pregunta como la tuya. Todo el código funciona bien en mi máquina local, pero resulta un error (noclassdeffound & initialize). Así que publico mi solución, pero no sé por qué, simplemente adelanto una posibilidad. Espero que alguien lo explique. @ John Vint En primer lugar, le mostraré mi problema. Mi código tiene variable estática y bloque estático ambos. Cuando conocí este problema por primera vez, probé la solución de John Vint e intenté detectar la excepción. Sin embargo, no atrapé nada. Entonces pensé que es porque la variable estática (pero ahora sé que son lo mismo) y todavía no encontré nada. Entonces, trato de encontrar la diferencia entre la máquina Linux y mi computadora. Luego descubrí que este problema ocurre solo cuando varios subprocesos se ejecutan en un proceso (por cierto, la máquina Linux tiene núcleos dobles y procesos dobles). Eso significa que si hay dos tareas (ambas usan el código que tiene un bloque estático o variables) que se ejecutan en el mismo proceso, sale mal, pero si se ejecutan en procesos diferentes, ambas están bien. En la máquina Linux, yo uso
mvn -U clean test -Dtest=path
para ejecutar una tarea, y debido a que mi variable estática es iniciar un contenedor (o tal vez usted inicializa un nuevo cargador de clases), por lo que permanecerá hasta que se detenga el jvm, y el jvm se detiene solo cuando todas las tareas en un proceso se detienen. Cada tarea iniciará un nuevo contenedor (o cargador de clases) y confundirá a jvm. Como resultado, ocurre el error. Entonces, ¿cómo resolverlo? Mi solución es agregar un nuevo comando al comando maven y hacer que cada tarea vaya al mismo contenedor.
-Dxxx.version=xxxxx #sorry can't post more
Tal vez ya haya resuelto este problema, pero todavía espera que ayude a otros que se encuentran con el mismo problema.