Heroku无法找到XML配置文件

时间:2016-05-14 23:55:02

标签: java spring-mvc heroku

我将一个Spring应用程序上传到Heroku但应用程序因以下错误而崩溃:

java.io.FileNotFoundException: class path resource [com/myname/myapp/config/dao-context.xml

该文件肯定存在,并且它在GIT中,并且应用程序在本地成功运行。

这里有什么想法吗?

2 个答案:

答案 0 :(得分:4)

我怀疑当你在本地运行时,它会将类路径上的文件作为文件系统上的常规文件(即不在JAR内部)接收。

在Heroku上,它可能在JAR文件中,这意味着它不是常规文件,必须作为输入流读取,可能如下所示:

ClassLoader cl = this.getClass().getClassLoader();
InputStream inputStream = cl.getResourceAsStream("com/myname/myapp/config/dao-context.xml");

您可以通过运行Procfile中的相同命令在本地重现问题。

如果不是这种情况,请运行此命令确保Heroku上存在该文件:

$ heroku run ls com/myname/myapp/config/dao-context.xml

答案 1 :(得分:0)

对于此问题的未来访问者,我通过将DAO XML配置文件转换为Java Config方法克服了问题,因此Spring不再需要该XML文件。这并没有直接解决无法找到XML文件的问题,但是额外的好处是我现在正在使用更现代,更简洁的Java Config方法。