Comment Déboguer Printemps NoSuchBeanDefinitionException
Nous avons une (non-application web) le Printemps de l'application qui jette une NoSuchBeanDefinitionException lors de l'exécution de tests sur notre CruiseControl d'intégration continue sous linux. Le test fonctionne très bien sur Windows dans Eclipse.
L'exception est levée sur le getBean() méthode:
ApplicationContext context = new ClassPathXmlApplicationContext(CONTEXT_FILE);
MyBean bean = (MyBean)context.getBean("myBean");
Le fichier de contexte est plutôt vaste et complexe. Le fichier de contexte est dans le classpath et le Printemps est de la trouver. Je préfère qu'il s'Printemps lever une exception lorsque vous essayez de charger le fichier de contexte et de construire les dépendances pour que nous puissions avoir une idée de par où commencer. Est-il un moyen de Ressort à force de lever une exception au moment de la création du contexte?
Vous devez vous connecter pour publier un commentaire.
Résolu. L'instanciation de "myBean" dans CONTEXT_FILE s'est produite après l'autre bean qui en dépendait. Cela ne devrait pas vraiment être un problème, mais je soupçonne que l'analyseur sur la boîte Linux doivent être plus strictes. De toute façon, en changeant l'ordre des définitions de le faire fonctionner sur Windows et Linux.
Êtes-vous certains qu'il y a un bean nommé "myBean" dans le CONTEXT_FILE? Êtes-vous à l'aide de plus d'un fichier de contexte? Avez-vous mis en place le Ressort de la journalisation pour vérifier que le CONTEXT_FILE est chargé correctement, et, en outre, que le fichier de Printemps est en cours de chargement à partir de la classe est le fichier dont vous pensez qu'elle devrait être de chargement?
Je pense que vous pourriez être à la recherche pour la mauvaise solution à votre problème - je n'ai jamais vu de Printemps jeter un NoSuchBeanDefinitionException sauf pour le cas où le bean que vous demandez n'est pas définie dans le contexte, simple que cela.
J'ai eu le même problème. Il s'est avéré que c'était un subtil classpath question.
Précisément, mon classpath sur linux a été mis en place afin que ma config répertoire contenant mes build.xml fichier est venu après mon x-pots (externe pots) répertoire - et quelques autres beans.xml a été capté à partir de mon x-pots qui, comme le message du journal correctement dit, ne contient pas nécessaire de haricot. Il aurait aidé si le chemin d'accès complet à l'beans.xml dossier avait été loggged avec le Printemps message d'erreur.