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

使用Apache FileUtils从Jenkins下载54MB文件仅完成9%的问题求助

解决Apache Commons IO下载文件不完整的问题

可能的原因及对应解决建议

  • 确认Jenkins资源URL有效性
    先手动在浏览器打开remoteURL,检查下载的文件大小是否为54MB。Jenkins部分构建页面的链接可能指向资源摘要页而非实际jar包,若手动下载也不完整,说明URL本身有误,需重新获取正确的jar包下载地址。

  • 自定义URLConnection处理请求头
    Jenkins可能要求特定请求头(如权限验证的Authorization、禁用压缩的Accept-Encoding),缺失时服务器可能返回截断内容。可替换FileUtils.copyURLToFile,手动构建连接处理:

    File dumpFile = new File(local_file_location);
    URL url = new URL(remoteURL);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    
    // 若Jenkins需权限验证,添加Basic Auth头(替换为你的用户名和API Token)
    // String auth = Base64.getEncoder().encodeToString("username:api_token".getBytes());
    // conn.setRequestProperty("Authorization", "Basic " + auth);
    
    conn.setRequestProperty("Accept-Encoding", "identity"); // 禁用响应压缩
    conn.setConnectTimeout(300000);
    conn.setReadTimeout(300000);
    
    try (InputStream in = conn.getInputStream();
         OutputStream out = new FileOutputStream(dumpFile)) {
        byte[] buffer = new byte[8192];
        int bytesRead;
        while ((bytesRead = in.read(buffer)) != -1) {
            out.write(buffer, 0, bytesRead);
        }
    } finally {
        conn.disconnect();
    }
    
  • 校验文件完整性
    对比本地文件与Jenkins服务器上jar包的MD5/SHA哈希值,若不一致则说明传输过程中数据丢失,需排查传输环节问题。

  • 优化超时与重试机制
    尽管已设置5分钟超时,若Jenkins服务器响应过慢仍可能触发中断。可适当延长超时时间,或添加重试逻辑:下载失败后自动重试2-3次,避免单次网络波动导致的不完整。

  • 排查网络环境问题
    用curl/wget命令在同一网络下下载文件,验证是否能完整获取:

    curl -O remoteURL
    

    若命令行下载也不完整,说明问题出在网络或Jenkins服务器端;若命令行正常,则聚焦代码层面的请求处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 02:55:58