Java 如何调试Spring NoSuchBeanDefinitionException

Java 如何调试Spring NoSuchBeanDefinitionException,java,spring,testing,Java,Spring,Testing,我们有一个(非web应用程序)Spring应用程序,在CruiseControl连续集成linux设备上运行测试时抛出NoSuchBeanDefinitionException。该测试在Eclipse中的Windows上运行良好 在getBean()方法上引发异常: 上下文文件相当大和复杂。上下文文件在类路径中,Spring正在查找它。我更希望Spring在尝试加载上下文文件和构建依赖项时抛出异常,这样我们就可以知道从哪里开始了。有没有办法强制Spring在创建上下文时抛出异常?您确定上下文文件

我们有一个(非web应用程序)Spring应用程序,在CruiseControl连续集成linux设备上运行测试时抛出NoSuchBeanDefinitionException。该测试在Eclipse中的Windows上运行良好

在getBean()方法上引发异常:


上下文文件相当大和复杂。上下文文件在类路径中,Spring正在查找它。我更希望Spring在尝试加载上下文文件和构建依赖项时抛出异常,这样我们就可以知道从哪里开始了。有没有办法强制Spring在创建上下文时抛出异常?

您确定上下文文件中有一个名为“myBean”的bean?您是否使用多个上下文文件?您是否打开了Spring的日志来验证CONTEXT_文件是否正确加载,而且Spring从类路径加载的文件是否就是您认为应该加载的文件


我认为您可能在寻找错误的问题解决方案-我从未见过Spring抛出NoSuchBeanDefinitionException,除非您请求的bean没有在上下文中定义,就这么简单。

解决了。上下文_文件中“myBean”的实例化发生在依赖它的另一个bean之后。这确实不应该是一个问题,但我怀疑Linux机器上的解析器必须更加严格。无论如何,更改定义的顺序使其在Windows和Linux上都能工作。

我也遇到了同样的问题。事实证明,这是一个微妙的类路径问题。
具体地说,我在linux上的类路径是这样设置的:包含build.xml文件的配置目录位于我的x-jars(外部jars)目录之后,并且从我的x-jars中提取了一些其他的beans.xml,正如日志消息正确地说的,x-jars不包含所需的bean。如果beans.xml文件的完整路径记录了Spring错误消息,这会有所帮助。

好的,这也是我异常的原因。Spring社区必须对此进行调查。
ApplicationContext context = new ClassPathXmlApplicationContext(CONTEXT_FILE);

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