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

Maven打包后userAgents.txt未纳入Jar,运行报FileNotFoundException

解决Jar包中无法读取userAgents.txt的问题

问题根源

你当前用File类读取./src/main/resources/userAgents.txt的方式,仅在IDE运行时有效——因为IDE会把src/main/resources下的文件复制到编译输出目录(比如target/classes),此时文件存在于本地文件系统中。但打包成Jar后,资源文件是Jar包内部的一个条目,并非独立的文件系统文件,File类无法定位到它,因此抛出FileNotFoundException。

正确的资源读取方式

改用类加载器的getResourceAsStream方法读取Jar内的资源,这是读取类路径资源的标准方式:

基础实现

// 替换YourClassName为你的实际类名
InputStream inputStream = YourClassName.class.getClassLoader().getResourceAsStream("userAgents.txt");
if (inputStream == null) {
    throw new RuntimeException("未找到userAgents.txt资源");
}
Scanner usrAgentReader = new Scanner(inputStream);

// 读取逻辑示例
while (usrAgentReader.hasNextLine()) {
    String userAgent = usrAgentReader.nextLine();
    // 处理User Agent
}

// 记得关闭资源
usrAgentReader.close();
inputStream.close();

推荐:使用try-with-resources自动关闭资源

避免手动关闭流时出现遗漏,推荐用Java的try-with-resources语法:

try (InputStream inputStream = YourClassName.class.getClassLoader().getResourceAsStream("userAgents.txt");
     Scanner usrAgentReader = new Scanner(inputStream)) {
    if (inputStream == null) {
        throw new RuntimeException("userAgents.txt资源不存在");
    }
    // 读取并处理每一行User Agent
    while (usrAgentReader.hasNextLine()) {
        String userAgent = usrAgentReader.nextLine();
        // 你的业务逻辑
    }
} catch (IOException e) {
    e.printStackTrace();
}

Maven配置确认

默认情况下,Maven会自动将src/main/resources下的所有文件打包到Jar包的根目录,无需额外配置。如果之前手动配置了<resources>节点,确保配置正确(无需变量替换时关闭filtering):

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.txt</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
</build>

验证资源是否被打包

执行mvn clean package后,用以下命令检查Jar包内是否包含目标文件:

jar tf your-project.jar | grep userAgents.txt

如果输出包含userAgents.txt,说明资源已成功打包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:55:27