Apenas alguns dias atrás, eu encontrei a mesma pergunta como a sua. Todo o código funciona bem na minha máquina local, mas resulta em erro (noclassdeffound & initialize). Então, posto minha solução, mas não sei por que, apenas proponho uma possibilidade. Espero que alguém saiba explique isso. @ John Vint Em primeiro lugar, mostrarei meu problema. Meu código tem variável estática e bloco estático. Quando conheci esse problema, tentei a solução de John Vint e tentei capturar a exceção. No entanto, eu não peguei nada. Então eu pensei que é porque a variável estática (mas agora eu sei que eles são a mesma coisa) e ainda não encontrei nada. Então, eu tento encontrar a diferença entre a máquina linux e o meu computador. Então eu descobri que esse problema ocorre apenas quando vários threads são executados em um processo (a propósito, a máquina linux tem núcleos duplos e processos duplos). Isso significa que, se duas tarefas (ambas usam o código que possui bloco ou variáveis estáticas) executadas no mesmo processo, dá errado, mas se executadas em processos diferentes, as duas estão ok. Na máquina Linux, eu uso
mvn -U clean test -Dtest=path
para executar uma tarefa e como minha variável estática é iniciar um contêiner (ou talvez você inicialize um novo carregador de classes), ele permanecerá até que a jvm pare e a jvm pare apenas quando todas as tarefas em um processo pararem. Toda tarefa iniciará um novo contêiner (ou carregador de classe) e isso deixará a jvm confusa. Como resultado, o erro acontece. Então, como resolver isso? Minha solução é adicionar um novo comando ao comando maven e fazer com que cada tarefa vá para o mesmo contêiner.
-Dxxx.version=xxxxx #sorry can't post more
Talvez você já tenha resolvido esse problema, mas ainda espero que ajude outras pessoas que enfrentam o mesmo problema.