You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.3 KiB
4.3 KiB
项目错误扫描与修复报告
1. 扫描范围与方法
- 扫描范围:
d:/VisualStudioProgram/VSCodePrograms/JavaLearningProject/project - 扫描手段:
- Maven 编译与测试:
mvn clean compile test-compile、mvn test - 运行验证:
mvn spring-boot:run并访问/directors - IDE 诊断:语言服务诊断(未发现额外问题)
- Maven 编译与测试:
2. 结论摘要
- 已发现并修复 2 个阻断编译的错误(P0)。
- 当前项目可以通过编译与单元测试,并可启动 Spring Boot 服务并访问页面。
- 仍存在若干运行期告警(P2),不阻断运行,但建议按需优化。
3. 错误清单(按优先级)
P0(阻断编译/必须立即修复)
P0-1:Movie 中引用了不存在的字段 year
- 错误类型:编译错误 / 字段不存在
- 错误描述:
Movie类已将年份字段更名为releaseYear,但toString()仍引用year,导致编译失败。 - 位置:Movie.java:L80-L92
- 修复方式:将
toString()中year替换为releaseYear。 - 修复状态:已修复。
P0-2:DataAnalyzer.countMoviesByYear 引用了 Movie::getYear
- 错误类型:编译错误 / 方法不存在(方法引用失效)
- 错误描述:
Movie已改为getReleaseYear(),但countMoviesByYear仍用Movie::getYear,导致编译失败。 - 位置:DataAnalyzer.java:L108-L114
- 修复方式:将方法引用替换为
Movie::getReleaseYear。 - 修复状态:已修复。
P1(影响功能/体验/性能,建议尽快处理)
P1-1:启动时执行爬虫,可能导致启动时间不稳定
- 错误类型:设计风险 / 稳定性风险
- 现象:应用启动时会抓取外网数据(
DataInitializer+MovieCrawler),网络波动可能导致启动变慢或失败。 - 位置:DataInitializer.java、MovieCrawler.java
- 修复建议:
- 将初始化爬取改为“手动触发”(管理接口/按钮),或加开关参数(例如 profile/配置项);
- 增加超时与重试策略,并在失败时降级为使用本地缓存数据。
P2(非阻断告警/可选优化)
P2-1:Spring JPA open-in-view 默认开启告警
- 错误类型:运行期告警 / 性能与一致性风险
- 现象:日志提示
spring.jpa.open-in-view is enabled by default。 - 修复建议:在 application.properties 中明确配置:
spring.jpa.open-in-view=false
P2-2:Java 25 运行 Maven/依赖触发的 native-access / Unsafe 告警
- 错误类型:运行期告警 / 兼容性提示
- 现象:日志出现
Restricted method in java.lang.System has been called、sun.misc.Unsafe等提示。 - 修复建议:
- 若需降低告警:使用较稳定的 LTS(例如 Java 17)运行项目;
- 或按告警指引添加 JVM 参数(视环境策略决定)。
P2-3:Hikari “Thread starvation or clock leap detected” 告警
- 错误类型:运行期告警 / 环境与调度提示
- 现象:长时间挂起或系统时间跳变时出现 housekeeper delta 异常。
- 修复建议:
- 确认运行环境无长时间暂停/休眠或时间同步跳变;
- 如频繁出现,调整连接池参数并排查阻塞点(例如初始化阶段的长耗时任务)。
4. 修复步骤(可复现/可验证)
- 编译验证:
mvn clean compile test-compile
- 单元测试验证:
mvn test
- 运行验证:
mvn spring-boot:run- 访问:
http://localhost:8080/directors
5. 验证结果
- 编译:通过(
mvn clean compile test-compile) - 测试:通过(
mvn test) - 运行:可启动并可访问导演排行榜页面