这个错误打动了我的大脑。所有junit测试都没问题但是当我的应用程序作为另一个应用程序的插件加载时,我有一个错误。 beans.xml是jar文件根目录的100%,但由于某种原因,加载我的插件的主应用程序无法找到该文件。为什么呢?
在我的应用程序的启动方法中,我打电话
new ClassPathXmlApplicationContext("beans.xml");
抛出
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [beans.xml]; nested exception is java.io.FileNotFoundException: class path resource [beans.xml] cannot be opened because it does not exist
或
new FileSystemXmlApplicationContext(getClass().getClassLoader().getResource("beans.xml").getPath());
抛出
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from URL [file:/C:/path/to/my.jar!/beans.xml]; nested exception is java.io.FileNotFoundException: C:\path\to\my.jar!\beans.xml (The system cannot find the path specified)
UPD:问题是应用程序使用自定义类加载器,它不会在root,META-INF等中加载资源文件,而只使用类
答案 0 :(得分:1)
你得到的FileNotFoundException确实指出beans.xml文件不在你认为它的地方的jar中。我想看看那个罐子里面。例如,您可以打开jar with the 7-zip tool。我发现当您收到报告错误时,这会提供有用的见解。
答案 1 :(得分:1)
如果您获得FileNotFoundException
,那是因为该文件不在您查找的位置。 beans.xml
文件必须位于src/main/resources