Как отладить Spring NoSuchBeanDefinitionException - PullRequest
2 голосов
/ 17 декабря 2008

У нас есть (не веб-приложение) Spring-приложение, которое выдает исключение NoSuchBeanDefinitionException при запуске тестов на нашем модуле непрерывной интеграции CruiseControl. Тест отлично работает на Windows в Eclipse.

Исключение выдается в методе getBean ():

ApplicationContext context = new ClassPathXmlApplicationContext(CONTEXT_FILE);

MyBean bean = (MyBean)context.getBean("myBean");

Файл контекста довольно большой и сложный. Файл контекста находится в пути к классам, и Spring находит его. Я бы предпочел, чтобы Spring выдавал исключение при попытке загрузить файл контекста и построить зависимости, чтобы у нас было представление о том, с чего начать. Есть ли способ заставить Spring генерировать исключение во время создания контекста?

Ответы [ 3 ]

3 голосов
/ 14 января 2009

решаемая. Создание экземпляра «myBean» в CONTEXT_FILE произошло после того, как другой бин зависел от него. Это действительно не должно быть проблемой, но я подозреваю, что синтаксический анализатор на коробке Linux должен быть более строгим. В любом случае, изменение порядка определений позволило работать как в Windows, так и в Linux.

2 голосов
/ 17 декабря 2008

Вы уверены, что в CONTEXT_FILE есть компонент с именем "myBean"? Вы используете более одного файла контекста? Вы включили ведение журнала Spring, чтобы убедиться, что CONTEXT_FILE загружается правильно, и, кроме того, файл, который Spring загружает из classpath, является именно тем файлом, который, как вы думаете, должен загружаться?

Я думаю, что вы, возможно, ищете неправильное решение вашей проблемы - я никогда не видел, чтобы Spring выдавал исключение NoSuchBeanDefinitionException, за исключением случая, когда запрашиваемый компонент не определен в контексте, просто так.

1 голос
/ 03 августа 2009

У меня была такая же проблема. Оказалось, что это была тонкая проблема пути к классам. В частности - мой classpath в linux был настроен так, что мой каталог конфигурации, содержащий мой файл build.xml, был указан после моего каталога x-jars (external jars) - и некоторые другие beans.xml были извлечены из моих x-jars, которые, как в сообщении журнала правильно сказано, что он не содержит требуемого компонента. Это помогло бы, если бы полный путь к файлу beans.xml был зарегистрирован с сообщением об ошибке Spring.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...