【问题标题】:Heroku Unable To Find XML Config FileHeroku 无法找到 XML 配置文件
【发布时间】:2016-09-11 00:17:40
【问题描述】:

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

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

文件肯定是有的,而且在git里面,app在本地运行成功。

你知道这里发生了什么吗?

【问题讨论】:

    标签: java spring-mvc heroku


    【解决方案1】:

    我怀疑当您在本地运行时,它会将类路径上的文件作为文件系统上的常规文件(即不在 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?
    • 非常感谢 - 这对我帮助很大!引用 getResourceAsStream("resource-file.yml") 允许访问与资源文件夹一起存储为 a/b/c/resource-file.yml 的文件。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-20
      • 2014-12-20
      • 1970-01-01
      • 2019-03-07
      • 2012-10-02
      • 1970-01-01
      • 2015-12-12
      相关资源
      最近更新 更多