如何使用Java的Class.getResourceAsStream()方法访问嵌套在Jar包中的默认资源文件?
- 内容介绍
- 文章标签
- 相关推荐
本文共计703个文字,预计阅读时间需要3分钟。
相关专题
在 java 中,class.getresourceasstream() 是读取 jar 包内资源文件最常用、最可靠的方式。关键在于路径写法要符合类加载器的查找规则——它基于类的包结构和类路径(classpath)进行解析,且对 jar 包完全透明。
路径必须以斜杠开头(绝对路径)或不加斜杠(相对路径)
如果资源文件与当前类在同一包下,可直接用不带斜杠的名称;若在根目录(即 META-INF/ 同级),必须以 / 开头。例如:
-
MyClass.class.getResourceAsStream("config.properties")→ 查找同包下的config.properties -
MyClass.class.getResourceAsStream("/images/logo.png")→ 查找 Jar 根目录下的images/logo.png -
MyClass.class.getResourceAsStream("data/data.json")→ 查找同包下子目录data/data.json(注意不是./data/...)
路径中的分隔符必须是正斜杠(/),不能用反斜杠()
即使在 Windows 系统中,Jar 内部资源路径也统一使用 /。
本文共计703个文字,预计阅读时间需要3分钟。
相关专题
在 java 中,class.getresourceasstream() 是读取 jar 包内资源文件最常用、最可靠的方式。关键在于路径写法要符合类加载器的查找规则——它基于类的包结构和类路径(classpath)进行解析,且对 jar 包完全透明。
路径必须以斜杠开头(绝对路径)或不加斜杠(相对路径)
如果资源文件与当前类在同一包下,可直接用不带斜杠的名称;若在根目录(即 META-INF/ 同级),必须以 / 开头。例如:
-
MyClass.class.getResourceAsStream("config.properties")→ 查找同包下的config.properties -
MyClass.class.getResourceAsStream("/images/logo.png")→ 查找 Jar 根目录下的images/logo.png -
MyClass.class.getResourceAsStream("data/data.json")→ 查找同包下子目录data/data.json(注意不是./data/...)
路径中的分隔符必须是正斜杠(/),不能用反斜杠()
即使在 Windows 系统中,Jar 内部资源路径也统一使用 /。

