首页 > Java > java教程 > 从 JAR 加载资源时,为什么 getResourceAsStream 返回 Null,如何修复?

从 JAR 加载资源时,为什么 getResourceAsStream 返回 Null,如何修复?

Barbara Streisand
发布: 2024-12-20 07:59:10
原创
336 人浏览过

Why Does getResourceAsStream Return Null When Loading Resources from a JAR, and How Can I Fix It?

解决从 JAR 加载资源时的“getResourceAsStream 返回 Null”问题

尝试从编译的 JAR 中的包加载文本文件时, getResourceAsStream 方法可能返回 null,这让开发人员感到困惑。本文深入研究了该问题并提供了解决方案。

最初尝试使用 Class::getResourceAsStream 和各种参数加载文件都导致打印 null。这种意外行为是由于 Class::getResourceAsStream(...) 方法使用的系统类加载器无法识别 JAR,因此无法访问 JAR 文件中的资源。

要解决此问题,需要使用能够访问 JAR 中资源的适当类加载器。在Java中,每个类都由一个类加载器加载,加载Lifepaths类的类加载器将有权访问JAR中的资源。因此,正确的加载文件的方法是直接使用 Class::getResourceAsStream() 方法,如下所示:

public static InputStream loadResource() {
    return Lifepaths.class.getResourceAsStream("/initialization/Lifepaths.txt");
}
登录后复制

注意,调用 getResourceAsStream(name) 时,名称必须以“/”开头”。这确保了资源是从类路径的根加载的,对于类加载器正确定位文件至关重要。

以上是从 JAR 加载资源时,为什么 getResourceAsStream 返回 Null,如何修复?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板