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

自托管Judge0 API查询提交详情时出现内部错误求助

解决Judge0自托管版本查询提交时的/box/main.c文件不存在错误

排查步骤与解决方案

  1. 检查Docker卷挂载配置
    Judge0依赖本地卷存储提交的代码文件,确保你的docker-compose.yml中正确配置了/box/data和/box/tmp的卷映射:
services:
  judge0:
    image: judge0/judge0:latest
    volumes:
      - ./judge0_data:/box/data
      - ./judge0_tmp:/box/tmp
    # 其他配置(端口、环境变量等)

如果卷未正确挂载,容器重启后提交的文件会丢失,导致查询时找不到/box/main.c。

  1. 验证提交与查询的编码参数一致性
    提交代码时的base64_encoded参数必须和查询时保持一致。比如提交时用了base64_encoded=true,查询时也需要设为true,否则会导致文件解析失败。同时检查提交请求中source_code字段是否正确传递,没有截断或编码错误。

  2. 修复容器目录权限
    Judge0容器需要对/box下的目录有读写权限,执行以下命令检查并修复:

# 查看容器内/box目录权限
docker exec -it <your-judge0-container-id> ls -ld /box /box/data /box/tmp

# 如果权限不足,修改本地挂载目录权限
chmod -R 777 ./judge0_data ./judge0_tmp

也可以在docker-compose.yml中临时指定user: root测试(生产环境不建议,需调整为合适的权限)。

  1. 清理并重启Judge0服务
    旧容器的缓存或损坏的卷数据可能导致问题,执行以下命令彻底清理后重启:
docker-compose down -v
docker-compose up -d --build

-v参数会删除所有关联卷,确保重新创建干净的存储环境。

  1. 核对Judge0版本与配置兼容性
    不同版本的Judge0可能有目录结构或配置参数变化,建议使用官方提供的最新docker-compose.yml配置,避免版本不匹配导致的文件路径错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 23:24:41