Java 项目排障不只是看日志。很多时候需要结合接口调试、进程观察、文件判断、JAR 反编译和 IDE 缓存处理,才能把问题定位清楚。
工具越多,越要按问题类型选择。否则容易变成到处点一点、每个方向都没查透。
接口调试先确认请求边界
接口问题首先要确认请求是否真的符合预期:
- URL 是否正确。
- Header 是否完整。
- Cookie 或 token 是否带上。
- 请求体格式是否符合接口定义。
- 环境是否连对。
Postman、curl、IDE HTTP Client 都可以用。重点不是工具名字,而是能否把请求完整保存下来,方便复现和对比。
如果接口依赖登录态,要特别注意 Cookie、Session 和跨域设置。很多“后端接口坏了”,最后其实是请求没带上正确身份信息。
文件大小不要乱读流
判断本地文件大小,直接读文件元数据即可:
long size = Files.size(Path.of(path));
判断远程图片或文件大小,优先发 HEAD 请求读取 Content-Length。不要为了拿大小把整个远程文件读进内存。
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("HEAD");
conn.setConnectTimeout(6000);
conn.setReadTimeout(6000);
long size = conn.getContentLengthLong();
如果服务端不返回长度,再考虑流式读取,并设置最大读取限制。
JAR 反编译只做辅助定位
遇到没有源码的依赖包,可以用 JD-GUI 或 IntelliJ 自带的 fernflower 查看。
适合反编译的场景:
- 查看第三方类的实际方法签名。
- 确认某个版本里是否有指定逻辑。
- 排查线上依赖版本和本地源码不一致。
但反编译结果不能直接当成可信源码复制。复杂泛型、匿名类、字节码增强后的代码,反编译结果都可能不够准确。
IDEA 问题先排缓存和导入方式
Java 项目里常见的 IDEA 问题包括依赖飘红、无法跳转、Tomcat 配置异常、Maven 仓库路径不对等。
排查顺序可以是:
- 确认 JDK 和 Maven 配置。
- 确认项目是按 Maven/Gradle 正确导入。
- 重新加载依赖。
- 清理 IDE 缓存。
- 必要时删除
.idea后重新导入。
不要一上来就改业务代码。IDE 问题和编译问题要分开看。
实用结论
Java 排障的关键是先归类:接口问题、文件问题、依赖问题、IDE 问题、运行时问题,各自有不同工具。
工具本身不神秘。能复现请求、能确认进程、能查看依赖、能判断文件和配置,问题就会从“玄学异常”变成可以逐步缩小范围的工程问题。
正文完




