服务器端加载资源失败

Loading resource fails at server-side

我有一个以下列方式加载资源的库:

BufferedReader r = new BufferedReader(
         new InputStreamReader(classLoader.getResourceAsStream(String.format("%s.txt", filename)), "UTF8")
);

图书馆的测试运行很好。

之后,另一个 Web 应用程序 (spring-boot) 使用该库作为依赖项(与 Maven)。但!如果我 运行 来自 Intellij 的 webapp - 工作正常。但是当我将它上传到服务器时,或者 运行 在本地使用 java -jar 它失败了:

Caused by: java.lang.NullPointerException: null
    at java.io.Reader.<init>(Reader.java:78)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:97)

有什么想法吗??

我想这取决于使用哪个ClassLoader。 我建议您将 classLoader 定义为

ClassLoader classLoader = SomeClass.class.getClassLoader();

其中 SomeClass 是包含“.txt”资源的同一 jar 中的 class。

这完全取决于您的 class loader.If 您的 class 加载程序无法找到它将 return null.Try 加载某些资源的资源存在于您的应用程序的 class 路径中。例如 "myfolder/myfile.txt" 其中 myfolder 存在于您的 class 路径的根目录中。

http://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html#getResource(java.lang.String)