You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WildFly 13域模式下读取类路径properties文件遇空指针求助

如何在WildFly 13域模式下正确读取类路径中的properties文件?

首先得明确你的文件在类路径中的位置:application.properties实际位于WEB-INF/classes/bis/com/test/config/下,而你的App类在bis.com.test.module包中。之前的代码之所以抛出空指针,核心问题是路径写法错误,导致找不到资源流。

下面给你几种靠谱的解决方案,都不需要移动文件:

方法1:利用当前类的相对路径访问

因为App类所在的module包和config包是同级(都在bis.com.test下),可以用相对路径定位到目标文件:

Properties props = new Properties();
// 相对当前类的包路径,向上退一级到test目录,再进入config包
try (InputStream in = getClass().getResourceAsStream("../config/application.properties")) {
    if (in != null) {
        props.load(in);
        String JDBC = props.getProperty("jdbc.connection");
        // 这里写你的业务逻辑
    } else {
        throw new FileNotFoundException("application.properties 未在类路径中找到");
    }
} catch (IOException e) {
    // 处理IO异常,比如打印日志
    e.printStackTrace();
}

方法2:从类路径根目录使用绝对路径访问

类路径的根就是WEB-INF/classes,所以直接从根开始写完整的包路径即可(注意开头的/表示从根目录出发):

Properties props = new Properties();
try (InputStream in = getClass().getResourceAsStream("/bis/com/test/config/application.properties")) {
    if (in != null) {
        props.load(in);
        String JDBC = props.getProperty("jdbc.connection");
    } else {
        throw new FileNotFoundException("application.properties 未在类路径中找到");
    }
} catch (IOException e) {
    e.printStackTrace();
}

方法3:使用线程上下文类加载器获取

这种方式不受当前类所在包的影响,直接从类路径根查找资源,适用性更广:

Properties props = new Properties();
try (InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("bis/com/test/config/application.properties")) {
    if (in != null) {
        props.load(in);
        String JDBC = props.getProperty("jdbc.connection");
    } else {
        throw new FileNotFoundException("application.properties 未在类路径中找到");
    }
} catch (IOException e) {
    e.printStackTrace();
}

为什么之前的代码会失败?

  • 你用/application.properties是在类路径根目录找这个文件,但你的文件在bis/com/test/config下,自然找不到,返回null后调用load()就会抛出NPE;
  • 你写的/WEB-INF/classes/...是错误的,因为类路径根已经是WEB-INF/classes,不需要再添加这个前缀,路径冗余导致资源定位失败。

内容的提问来源于stack exchange,提问作者Roth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 12:13:13