从jar获取资源

Vic*_*iuk 15 java resources jar

我有文件jar:

myJar/res/endingRule.txt
myJar/wordcalculator/merger/Marge.class
Run Code Online (Sandbox Code Playgroud)

在Marge.java我有代码:


private static final String ENDINGS_FILE_NAME = "res/endingRule.txt";
....
InputStream inputStream  = getClass().getClassLoader().getResourceAsStream(ENDINGS_FILE_NAME);
.....

但是在这个inputStream为null之后.如何使用资源?为什么空?

Pau*_*des 16

要检索jar中的文件,请使用:

private static final String ENDINGS_FILE_NAME = "/res/endingRule.txt";
...
InputStream is = getClass( ).getResourceAsStream(ENDINGS_FILE_NAME);
Run Code Online (Sandbox Code Playgroud)

  • 对于遇到此问题的所有其他人,CASE SENSITIVITY MATTERS带有文件名.至少它在Windows 7上使用JRE 6. (3认同)
  • 不过,当使用 getClassLoader().getResourceAsStream()` 时,这不是必需的 - 这不需要前导斜杠。 (2认同)

Jon*_*eet 6

你的名字看起来不对 - 错误的扩展名错误的斜杠:

private static final String ENDINGS_FILE_NAME = "res/endingRule.txt";
Run Code Online (Sandbox Code Playgroud)

  • @Victoria:如果你真的*调用`getClassLoader().getResourceAsStream()`而不仅仅是`getClass().getResourceAsStream(),我不认为缺少一个领先的斜杠就是问题所在. . (3认同)