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

项目错误扫描与修复报告

1. 扫描范围与方法

  • 扫描范围:d:/VisualStudioProgram/VSCodePrograms/JavaLearningProject/project
  • 扫描手段:
    • Maven 编译与测试:mvn clean compile test-compilemvn test
    • 运行验证:mvn spring-boot:run 并访问 /directors
    • IDE 诊断:语言服务诊断(未发现额外问题)

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 calledsun.misc.Unsafe 等提示。
  • 修复建议
    • 若需降低告警:使用较稳定的 LTS(例如 Java 17)运行项目;
    • 或按告警指引添加 JVM 参数(视环境策略决定)。

P2-3:Hikari “Thread starvation or clock leap detected” 告警

  • 错误类型:运行期告警 / 环境与调度提示
  • 现象:长时间挂起或系统时间跳变时出现 housekeeper delta 异常。
  • 修复建议
    • 确认运行环境无长时间暂停/休眠或时间同步跳变;
    • 如频繁出现,调整连接池参数并排查阻塞点(例如初始化阶段的长耗时任务)。

4. 修复步骤(可复现/可验证)

  1. 编译验证:
    • mvn clean compile test-compile
  2. 单元测试验证:
    • mvn test
  3. 运行验证:
    • mvn spring-boot:run
    • 访问:http://localhost:8080/directors

5. 验证结果

  • 编译:通过(mvn clean compile test-compile
  • 测试:通过(mvn test
  • 运行:可启动并可访问导演排行榜页面