我在web应用程序中使用基于spring java的配置。我有一个问题。未能加载bean类;嵌套的异常是java.io.FileNotFoundException:类路径资源无法打开,因为它不存在
在我的配置文件中,我正在导入并获取一些其他的java配置文件。
当我运行我的测试用例时,所有的测试用例都在传递。在我的测试用例中,我使用Aplication来获取bean。那里我没有任何问题。但是当我告诉它在服务器上运行时,它表示其中一个配置文件不存在。所以导入不起作用。但是,当我按Ctrl +点击代码,我可以进入该配置代码。
我正在使用TomCat版本7.0和使用maven我得到所有其他依赖项。
堆栈跟踪如下:
INFO: Initializing Spring root WebApplication
Jul 18, 2012 4:56:28 PM org.apache.catalina.core.Standard Start
SEVERE: to of
org.springframework.web..Loader
org.springframework.beans.factory.BeanDefinitionStore: Failed to load bean :
com.Hello.World.HelloWorldConfig; nested is
java.io.FileNotFound: path resource [com/hello/configs/MyConfig.] cannot be opened because it does not exist
at org.springframework..annotation.ConfigurationPostProcessor.processConfigBeanDefinitions(ConfigurationPostProcessor.java:267)
at org.springframework..annotation.ConfigurationPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationPostProcessor.java:203)
at org.springframework..support.AbstractApplication.invokeBeanFactoryPostProcessors(AbstractApplication.java:622)
at org.springframework..support.AbstractApplication.refresh(AbstractApplication.java:451)
at org.springframework.web..Loader.configureAndRefreshWebApplication(Loader.java:385)
at org.springframework.web..Loader.initWebApplication(Loader.java:284)
at org.springframework.web..Loader.(Loader.java:111)
at org.apache.catalina.core.Standard.Start(Standard.java:4779)
at org.apache.catalina.core.Standard.startInternal(Standard.java:5273)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.io.FileNotFound: path resource [com/hello/configs/MyConfig.] cannot be opened because it does not exist
at org.springframework.core.io.PathResource.getInputStream(PathResource.java:157)
at org.springframework.core.type.reading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:49)
at org.springframework.core.type.reading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)
at org.springframework.core.type.reading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:101)
at org.springframework.core.type.reading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:76)
at org.springframework..annotation.ConfigurationParser.processImport(ConfigurationParser.java:317)
at org.springframework..annotation.ConfigurationParser.doProcessConfiguration(ConfigurationParser.java:228)
at org.springframework..annotation.ConfigurationParser.processConfiguration(ConfigurationParser.java:149)
at org.springframework..annotation.ConfigurationParser.parse(ConfigurationParser.java:126)
at org.springframework..annotation.ConfigurationPostProcessor.processConfigBeanDefinitions(ConfigurationPostProcessor.java:263)
... 16 more
Jul 18, 2012 4:56:28 PM org.apache.catalina.core.Standard startInternal
SEVERE: Error Start
Jul 18, 2012 4:56:28 PM org.apache.catalina.core.Standard startInternal
SEVERE: [/helloWorld] startup failed due to previous errors
Jul 18, 2012 4:56:28 PM org.apache.catalina.core.Application log
INFO: Closing Spring root WebApplication
而且配置如下
@Configuration
@Import({MyConfig.})
public HelloWorldConfig {
@Autowired
public MyName myName;
@Bean
public MyModel myModel() {
MyModel bean = new MyModel();
bean.setMyName(myName);
return bean;
}
}
我无法弄清楚,我错过了什么。
UPDATE:
我注意到,当我关闭MYNAME项目在eclipse它不工作,当我打开它的项目工作。但MyModel项目不应该依赖本地磁盘上的myname项目。我为Myname项目创建了一个jar,并将其推送到中央存储库中。所以它应该从回购中获得jar。所以我无法理解它与我的本地磁盘内容有什么关系。
谢谢
嘿Arne,我注意到,当我关闭在Eclipse中的MyName项目它不工作,当我打开它的项目工作。但MyModel项目不应该依赖本地磁盘上的myname项目。我为Myname项目创建了一个jar并将其推送到本地存储库中 – javaMan 2012-07-19 13:26:24
@ravi我很确定它没有部署。可以肯定的是,请检查部署目录。 – Arne 2012-07-19 14:29:34
你可以更多的elobarate。我不明白你的意思是部署目录。 – javaMan 2012-07-19 14:30:57