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

Quartz定时发送Discord图片时JDA输出未关闭资源警告的解决咨询

问题解决:JDA发送图片时的RestAction警告

警告原因

这个警告是因为你传入sendFile的InputStream没有被正确关闭。JDA的MessageAction完成请求后不会自动关闭外部传入的流,Finalizer线程检测到未关闭的资源时就会输出该警告。

代码修复方案(推荐)

使用try-with-resources语法自动关闭InputStream,确保资源被正确释放:

修改ImageSendingJob.java的execute方法:

public class ImageSendingJob implements Job {
    @Override
    public void execute(JobExecutionContext context) {
        TextChannel textChannel = JDA.guild.getTextChannelById("ID");
        // 用try-with-resources包裹流,自动关闭
        try (InputStream image = // 你的图片流获取逻辑) {
            textChannel
                    .sendFile(image, String.format("%s.png", context.getFireTime()))
                    .complete();
        } catch (IOException e) {
            // 按需处理异常,比如打印错误日志
            e.printStackTrace();
        }
    }
}

try-with-resources会在代码块执行完毕后自动关闭所有实现了AutoCloseable接口的资源,彻底解决资源泄漏问题,警告也会随之消失。

关闭警告的临时方案(不推荐)

如果不想修改代码,可以通过日志框架配置屏蔽该类的WARN级别日志。以Logback为例,在logback.xml中添加如下配置:

<logger name="net.dv8tion.jda.api.requests.RestAction" level="ERROR"/>

但这种方法只是隐藏警告,并没有解决资源泄漏的根本问题,长期运行可能导致系统资源耗尽,不建议使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:25:18