【发布时间】:2018-01-24 01:40:41
【问题描述】:
public class LanguageUtil {
public static Properties properties = new Properties();
private void loadLanguageConfig(String filename) {
try {
String resourceName = "lang\\" + filename;
ClassLoader loader = Thread.currentThread().getContextClassLoader();
try(InputStream resourceStream = loader.getResourceAsStream(resourceName)) {
properties.load(resourceStream);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
错误:
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at <package>.testing.Main.main(Main.java:26)
Caused by: java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Unknown Source)
at java.util.Properties.load0(Unknown Source)
at java.util.Properties.load(Unknown Source)
at <package>.LanguageUtil.loadLanguageConfig(LanguageUtil.java:19)
... 5 more
第 19 行是“properties.load(resourceStream);”
我正在尝试从 maven 创建的资源文件夹中的“lang”文件夹中检索文件。当 jar 构建时,我打开 jar 和 lang 文件夹,以及 lang 文件夹中的文件。
编辑:感谢https://stackoverflow.com/users/679824/krishnan-mahadevan 的帮助!将“lang\”的文件夹路径更改为“lang/”解决了这个问题。
【问题讨论】:
-
什么语言\\?文件夹?
-
您能否尝试将
String resourceName = "lang\\" + filename;更改为String resourceName = "/lang/" + filename;看看是否有帮助? -
成功了!将它从“lang\\”更改为“lang/”有效!它以前在 IntelliJ 中工作,而不是在控制台中。现在它适用于两者!
-
请添加自我回答。我会帮助其他人搜索未回答的问题
标签: java maven properties nullpointerexception resources