9
votes

java.lang.noclassdefferror quand le fichier est là

J'ai essayé de regarder autour de vous pour des messages qui pourraient m'aider, je ne peux pas y trouver.

Je déploie une oreille vers JBoss4 Server et j'ai commencé à avoir ce problème depuis que j'ai ajouté un nouveau projet.

Ce nouveau projet est défini comme le projet Java dans Eclipse et le projet EAR dispose d'un projet EJB qui possède le nouveau projet Java en tant que l'un des projets que son dépendant - s'il est déployé sur JBoss via Eclipse, il n'y a pas de problème et tout se passe bien

mais lors du déploiement de JBoss dans l'environnement de test (Eclipse extérieure), continuez à obtenir Java.lang.noclassDeffondon sur l'une des classes définies dans le nouveau projet Java.

J'ai regardé à l'intérieur du fichier d'oreille pour vous rendre au JAR (projet EJB), puis à l'intérieur du pot, je peux voir la structure de répertoire et tous les fichiers de classe du nouveau projet Java - c'est-à-dire. La classe qu'il se plaint est juste là-bas à l'intérieur du pot d'oreille et correspondant à la structure exacte qu'elle recherche.

Je suis perdu à ce que je peux regarder d'autre.

Tous les pointeurs sont grandement appréciés!

merci


2 commentaires

J'ai tout essayé et ça me donne toujours la même exception


J'ai oublié de répondre à ce fil - comme une mise à jour: j'ai découvert ce que le problème était, qui était vraiment stupide, à un moment donné, j'ai renommé le nom du paquet en changeant un personnage à capitalisé. par exemple. de Packagename, à Packagename - et quelque part en cours de route, certains fichiers de classe y référent toujours par l'ancien nom (non capitalisé) et donc le NOCLASSDEffoundEfferror


5 Réponses :


0
votes

Vérifiez votre fichier d'oreille. La structure comme celle-ci? xxx

Sinon, vous devez reconditionner votre fichier d'oreille.


1 commentaires

C'est à peu près comment la structure est, bien que dans le jar EJB, j'ai persistance.xml au lieu de ejb-jar.xml



0
votes

cocher la propriété " de classe de classe :" Dans meta-inf / manifeste.mf . .


1 commentaires

Essayez d'écrire le pot de dépendance, comme "ClassePath: dépendance.jar dépendance.jar"



7
votes

Vous obtenez souvent cette erreur s'il y a une inadéquation de la manière dont certaines des classes ont été compilées. Par exemple, si vous avez compilé certaines des classes dans une version ultérieure du JDK sans régler le niveau de conformité Java et vous l'exécutez avec une version antérieure.

Ma suggestion est de vérifier la JDK que vous exécutez JBoss avec, puis vérifiez comment vous avez compilé vos classes


1 commentaires

Funnily, le problème était parce que je modifiais le nom du paquet avec certains personnages capitalisés vers des non-capitalisés ou inversement et visser les fichiers à l'intérieur du pot



1
votes

Cela pourrait également être dû aux problèmes d'isolation des chargeurs de classes si vous avez plusieurs fichiers WAR / EAR


0 commentaires

2
votes

J'ai eu un problème comme celui-ci avec JBoss 4: ClassNotFoundException et NoclassDeffondonError au moment de l'exécution même si le code compilait bien. Il m'a fallu 4 heures pour découvrir la cause.

La buildpath de mes projets était correcte, le problème était en réalité dans la classe de classe de JBoss. Je l'ai résolu en faisant: JBoss 4.2 Runtime Server> Configuration de lancement ouvert> Modifier la configuration> CLASSPATH> Ajout de pots et de projets à lier à JBoss avec "Ajouter des pots" / "Ajouter des projets".

Eclipse connaissait les classes des pots et des projets connexes grâce à la buildpath, il n'y avait donc aucune erreur dans l'IDE, mais le serveur JBoss ne savait pas où trouver ces classes ...


0 commentaires