跳至主要內容

【OJ】沙箱代码调试

holic-x...大约 2 分钟

【OJ】沙箱代码调试

参考功能说明:http://www.ikun-oj.top/view/question/1720794298284281858/description

题目描述、题解、提交记录(查看提交记录,显示提交信息)

如果编译失败,则可将编译结果进行返回(例如引入在线调试接口等,返回相应的提示信息:编译、调试、输入测试用例等)

编译成功
ExecuteMessage(exitValue=0, message=, errorMessage=null, time=274, memory=null)
运行失败,错误码: 1
ExecuteMessage(exitValue=1, message=, errorMessage=错误: 在类 Main 中找不到 main 方法, 请将 main 方法定义为:
   public static void main(String[] args)
否则 JavaFX 应用程序类必须扩展javafx.application.Application, time=34, memory=null)
删除成功
超时了,中断

求两数之和

运行参考代码

public class Main {
    public static void main(String[] args) {
        int a = Integer.parseInt(args[0]);
        int b = Integer.parseInt(args[1]);
        System.out.println("结果:" + (a + b));
    }
}

Status:code为0正常响应、status是判题响应状态 :参考QuestionSubmitStatusEnum

1.正常示例

运行成功=》发送响应内容(提示错误信息等)

# 参考示例
{
  "code": "",
  "judgeInfo": "",
  "language": "",
  "questionId": 1787049705855799298,
  "status": 0
}
# 正常请求(正常编译测试)
{
  "code":"public class Main {\r\n    public static void main(String[] args) {\r\n        int a = Integer.parseInt(args[0]);\r\n        int b = Integer.parseInt(args[1]);\r\n        System.out.println(\"结果:\" + (a + b));\r\n    }\r\n}",
  "language": "",
  "questionId": 1787049705855799298,
  "status": 0
}

请求参数错误

未指定核心参数信息(例如questionId)

{
  "code": "",
  "judgeInfo": "",
  "language": "",
  "questionId": 0,
  "status": 0
}

调用结果

{
  "code": 40000,
  "data": null,
  "message": "请求参数错误"
}

2.定义类名出错(Main)

​ 传入code为空,或者没有检测到以Main主类

请求数据

{
  "code":"public class Hello {\r\n    public static void main(String[] args) {\r\n        int a = Integer.parseInt(args[0]);\r\n        int b = Integer.parseInt(args[1]);\r\n        System.out.println(\"结果:\" + (a + b));\r\n    }\r\n}",
  "language": "",
  "questionId": 1787049705855799298,
  "status": 0
}

响应数据:

{
  "code": 0,
  "data": {
    "outputList": [],
    "message": "错误: 找不到或无法加载主类 Main\n原因: java.lang.ClassNotFoundException: Main",
    "status": 3,
    "judgeInfo": {
      "message": null,
      "memory": null,
      "time": "0"
    }
  },
  "message": "ok"
}

自定义全局异常不生效的原因:

确认自定义异常处理类的实现

确认自定义异常有没有被包含再Springboot扫描的区域(例如启动类xxxApplication是不是放在某个包里面,作用域没有扫描到全局的内容)。例如全局异常写在其他模块(公共模块、非服务),如果没有开启包扫描,或者启动类放在其他包内部,作用域没有起作用(例如在framework模块定义自定义异常,而Application启动类却放在oj包下,导致没有扫描到相应的类定义)

注意自定义异常处理,将相应的响应信息返回给backend(不要只返回服务器响应异常)

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3