Heroku无法找到XML配置文件

我将Spring应用程序上传到Heroku但应用程序崩溃时出现以下错误:

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

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

有什么想法在这里发生了什么?

我怀疑当你在本地运行时,它会将类路径上的文件作为文件系统上的常规文件(即不在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 

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