我上传的Spring应用程序中的Heroku但应用程序,出现以下错误崩溃:的Heroku无法找到XML配置文件
java.io.FileNotFoundException: class path resource [com/myname/myapp/config/dao-context.xml
的文件肯定是有,也是在GIT,和应用程序本地成功运行。
任何想法这里发生了什么?
我上传的Spring应用程序中的Heroku但应用程序,出现以下错误崩溃:的Heroku无法找到XML配置文件
java.io.FileNotFoundException: class path resource [com/myname/myapp/config/dao-context.xml
的文件肯定是有,也是在GIT,和应用程序本地成功运行。
任何想法这里发生了什么?
对于这个问题今后的游客,我通过我的DAO XML配置文件转换为克服这个问题Java Config方法,因此Spring不再需要该XML文件。这并没有直接解决无法找到XML文件的问题,但是增加的好处是我现在使用更现代,更简洁的Java Config方法。
我怀疑当你在本地运行时,它会在类路径上以文件系统上的常规文件(即不在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
谢谢。我目前在注释中引用该文件 - “@ImportResource({”classpath:com/myname/myapp/config/dao-context.xml“})''。我将如何使用ClassLoader? –