【问题标题】:ClassLoader.getSystemResourceAsStream not working when running on tomcatClassLoader.getSystemResourceAsStream 在tomcat上运行时不起作用
【发布时间】:2011-05-10 08:31:01
【问题描述】:

我正在使用 ClassLoader.getSystemResourceAsStream 加载配置文件。该文件位于我的 GWT 应用程序的 src 文件夹中。它以war/WEB-INF/classes 结尾。 我将war 文件夹复制到webapps/MyApp 下的tomcat。运行应用程序时,getSystemResourceAsStream 会引发异常。 在 Jetty 下运行时运行良好。

【问题讨论】:

    标签: java gwt tomcat


    【解决方案1】:

    试试:

    getClass().getClassLoader().getResourceAsStream();
    

    它肯定会起作用;我也有同样类型的问题。 This question 描述了您遇到此问题的原因。

    【讨论】:

    • 谢谢...我正在尝试不同的解决方案超过 4 小时...这个答案对我有用...
    【解决方案2】:

    改用getClass().getResourceAsStream()。您需要调用此方法来访问 Web 应用程序的类加载器。您调用的方法使用系统类加载器,我相信它只会包含 Web 容器本身的类。

    【讨论】:

    • ClassLoader.getResourceAsStream() 不是静态方法,所以我不能这样称呼它。
    • 更新答案,使用getClass().getResourceAsStream()
    • 会发生什么?它在 Jetty 下工作吗?也许您可以在问题中包含相关的代码行。
    • 它在 Jetty 下工作。我认为它会在 Tomcat 下抛出 IOException。
    【解决方案3】:

    这应该可行:

    Thread.currentThread().getContextClassLoader().getResourceAsStream( "relative/path" );
    

    注意relative/path是相对于war/WEB-INF/classes的路径 例如。如果你的文件是 war/WEB-INF/classes/resources/my.properties 然后使用“resources/my.properties”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-13
      • 2015-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多