而不是尝试将资源作为文件寻址,只需让
ClassLoader返回资源的
InputStream,而不是通过
getResourceAsStream:
InputStream in = getClass().getResourceAsStream("/file.txt");BufferedReader reader = new BufferedReader(new InputStreamReader(in));只要该
file.txt资源在类路径上可用,那么此方法将以相同的方式工作,而不管该
file.txt资源是位于
classes/目录中还是位于之中jar。
URI is not hierarchical发生这种情况是因为jar文件中资源的URI看起来像这样:
file:/example.jar!/file.txt。你无法读取jar(zip文件)中的条目,就像原来的File一样。



