Java ClassLoader.getSystemResourceAsStream在tomcat上运行时不工作

Java ClassLoader.getSystemResourceAsStream在tomcat上运行时不工作,java,gwt,tomcat,Java,Gwt,Tomcat,我正在使用ClassLoader.getSystemResourceAsStream加载配置文件。该文件位于我的GWT应用程序的src文件夹中。它以war/WEB-INF/classes结尾。 我将war文件夹复制到webapps/MyApp下的tomcat。运行应用程序时,getSystemResourceAsStream引发异常。 在Jetty下运行时,它可以正常工作。试试。您需要调用此方法来访问web应用程序的类加载器。您调用的方法使用系统类加载器,我相信它只包含web容器本身的类。试试:

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

试试。您需要调用此方法来访问web应用程序的类加载器。您调用的方法使用系统类加载器,我相信它只包含web容器本身的类。

试试:

getClass().getClassLoader().getResourceAsStream();
它肯定会起作用;我也有同样的问题。描述出现此问题的原因。

这应该可以:

Thread.currentThread().getContextClassLoader().getResourceAsStream( "relative/path" );
请注意,relative/path是相对于war/WEB-INF/classes的路径
例如,如果您的文件是war/WEB-INF/classes/resources/my.properties,那么使用“resources/my.properties”

ClassLoader.getResourceAsStream()不是静态方法,所以我不能这样调用它。更新后的答案是,使用
getClass().getResourceAsStream()
。会发生什么?它在码头下工作吗?也许你可以在你的问题中包括相关的代码行。它在Jetty下工作。我想它会在Tomcat的下面抛出异常谢谢。。。我尝试了4个多小时的不同解决方案。。。这个答案对我有用。。。