500错误

📅 2026/7/24 9:16:37
500错误
先排查这两类错误是 RagWings 平台本身的问题还是我刚才的 Java 改动引起的。并行检查 Tomcat 日志、RagWings 平台连通性以及我改动的代码。1.查看 Tomcat 日志中的 RagWings 错误并测试 RagWings 平台连通性docker exec kmpro-tomcat sh -c tail -n 60 /usr/local/tomcat/logs/catalina.out 2/dev/null \ | grep -iE ragwings|500|exception|error|translate echo token check curl -s -m 10 -o /dev/null -w HTTPCODE%{http_code}\n \ http://192.168.11.225:3000/open/token 21 || echo CURL_FAIL 命令部分参数/选项含义详细说明docker exec kmpro-tomcatexec在运行中的容器内执行命令进入kmpro-tomcat容器sh -c ...-c将字符串作为完整命令执行用容器的Shell解释器执行多行命令tail -n 60-n 60显示文件最后60行查看最新60行日志/usr/local/tomcat/logs/catalina.out-Tomcat主日志文件路径标准输出和错误合并日志2/dev/null2重定向标准错误将错误信息丢弃文件不存在也不报错| grep -iE-i忽略大小写匹配时不区分大小写-E扩展正则表达式支持|或逻辑匹配ragwings|500|exception|error|translate匹配模式匹配这5个关键词之一echo token check -输出分隔标记标识下一部分是Token检查结果curl -s -m 10-s静默模式不显示进度条和错误信息-m 10超时10秒连接超时或传输超时限制-o /dev/null-o输出到文件丢弃响应体只保留状态码-w HTTPCODE%{http_code}\n-w自定义输出格式仅输出HTTPCODE200格式http://192.168.11.225:3000/open/token-Token服务地址检查服务是否可达2121合并错误到标准输出让||能捕获到连接失败错误|| echo CURL_FAIL||逻辑或前一条命令失败时执行退出码非0echo CURL_FAIL失败标记curl超时或连接失败时输出找到根因了。核心错误是java.lang.NoSuchMethodError: RagWingsService.runToolStream(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;)Ljava/io/InputStream; at RagWingsController.ask(RagWingsController.java:121)我重新编译并部署的 RagWingsService.class 的 runToolStream 是 6 个参数op, input, question, loreId, version, categoryMainId但容器里正在运行的 RagWingsController 调用的是 5 个参数 的版本。两者签名不匹配 → 所有 RagWings 调用全部 500。说明本地源码的 runToolStream 是 6 参但部署在容器里的 RagWingsController旧版5 参调用方和我新部署的 6 参 Service 不一致。我之前只编译了 Service没编译 Controller导致不匹配。修复把 RagWingsController 也用同一份源码重新编译部署使两者一致都用 6 参。重新建编译 classpath 并编译两个文件。