Il y a seulement quelques jours, j'ai rencontré la même question que la vôtre. Tout le code fonctionne bien sur ma machine locale, mais finit par afficher une erreur (noclassdeffound&initialize). J'ai donc posté ma solution, mais je ne sais pas pourquoi, j'ai simplement avancé une possibilité. J'espère que quelqu'un qui sait l'expliquera. @John Vint Tout d'abord, je vais vous montrer mon problème. Mon code a à la fois une variable statique et un bloc statique. Lorsque j'ai rencontré ce problème pour la première fois, j'ai essayé la solution de John Vint, et j'ai essayé d'attraper l'exception. Cependant, je n'ai rien attrapé. J'ai donc pensé que cela était dû à la variable statique (mais maintenant je sais que ce sont les mêmes choses) et je n'ai toujours rien trouvé. Donc, j'ai essayé de trouver la différence entre la machine linux et mon ordinateur. Ensuite, j'ai découvert que ce problème se produit uniquement lorsque plusieurs threads s'exécutent dans un même processus. Cela signifie que si deux tâches (utilisant toutes les deux le code qui a un bloc statique ou des variables statiques) s'exécutent dans le même processus, cela échoue, mais si elles s'exécutent dans des processus différents, les deux fonctionnent. Sur la machine Linux, j'utilise
mvn -U clean test -Dtest=chemin
pour exécuter une tâche, et comme ma variable statique sert à démarrer un conteneur (ou peut-être initialiser un nouveau classloader), elle restera active jusqu'à l'arrêt de la JVM, et la JVM s'arrête seulement lorsque toutes les tâches dans un processus s'arrêtent. Chaque tâche va démarrer un nouveau conteneur (ou classloader) et cela perturbe la JVM. En conséquence, l'erreur se produit. Alors, comment résoudre ce problème? Ma solution est d'ajouter une nouvelle commande à la commande maven, et de faire en sorte que chaque tâche aille dans le même conteneur.
-Dxxx.version=xxxxx #désolé, je ne peux pas en dire plus
Vous avez peut-être déjà résolu ce problème, mais j'espère quand même que cela aidera d'autres personnes qui rencontrent le même problème.
0 votes
Est-ce que la structure de répertoire appropriée dans votre jar correspond au package de classe ?
0 votes
Besoin de voir certaines sources, de nombreuses choses peuvent causer cela. par exemple, une déclaration 'package' mais le fichier ne réside pas réellement dans le chemin correspondant
4 votes
Une cause est une exception pendant l'initialisation--y a-t-il une autre sortie d'erreur?