服务器端加载资源失败
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)
我有一个以下列方式加载资源的库:
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)