- backend/: 13 Maven modules (cw-elevator-application, cloudwalk-cloud, intelligent-cwoscomponent, ninca-crk, etc.) - frontend/: 4 Vue projects (elevator-front, cwos-portal, alarm-front, front_acs) + decompiled + scripts - scripts/: build, test-env, tools (Docker Compose, service templates, API parity) - docs/: AGENTS.md, superpowers specs, architecture docs - .gitignore: standard Java/Maven exclusions Moved from legacy maven-*/ root layout to backend/ organized structure.
9.7 KiB
DIFFERENT(剩余):逐类 javap -p 核对(现场 JAR vs 本仓库 target/classes)
日期: 2026-05-06(2026-05-06 更新:OpenCvUtils + 三工具类已与现场 IDENTICAL,DIFFERENT 18)
依据: maven-ninca-common-component-organization/tools/out/deploy_javap_audit_main.json 中 status == "DIFFERENT"
证据文件: tools/out/different-22-javap/(历史批量 diff);复跑审计后以 deploy_javap_audit_main.json 为准
现场 classpath: ninca-common-component-organization-V2.9.2_20210730/BOOT-INF/classes + 四模块 *-v2.9.2_xinghewan.jar
本地 classpath: interface / data / service / web / starter 的 target/classes(与 deploy_javap_audit.py 一致)
1. 总览:差异类型与处置
| 类型 | 含义 | 本批数量(约) |
|---|---|---|
| A. 仅 synthetic / lambda 形变 | 无 public/protected 方法签名的变化,差异集中在 lambda$…、null$ 或具体化类型(List→ArrayList) |
多数 |
| B. 小范围 API 面变化 | 主要为 ChannelFileReader 声明 AutoCloseable(工具类构造已与现场对齐) |
1 |
| C. 明确业务增强 | 新增字段/私有方法或组织 detail 等实现路径增加分支 |
2+ |
| D. 与现场能力严重偏离 | 公开方法集合与现场不等价 | 已处理(OpenCvUtils 已与现场 IDENTICAL) |
说明: 已与现场 IDENTICAL 的曾有 DIFFERENT 项:OpenCvUtils(与 jar.src/javap 对齐)、ImageUtil/ToolUtil/ImageEditUtils(补 private 无参构造,与部署 service JAR 一致)。仍 DIFFERENT 共 18 类(多为 synthetic/lambda 或业务超前)。
2. 逐类表(剩余 DIFFERENT:18;已收敛项见 §2.1)
2.1 已从 DIFFERENT 收敛(供追溯)
| FQN | 处置 |
|---|---|
OpenCvUtils |
与现场 service JAR + jar.src 对齐,javap -p IDENTICAL |
ImageUtil、ToolUtil、ImageEditUtils |
增加 private Xxx() {},与部署 private 无参构造一致,javap IDENTICAL |
2.2 仍为 DIFFERENT(简表)
| # | FQN | 差异要点(见对应 diff-*.patch) |
分类 | 建议 |
|---|---|---|---|---|
| 1 | …common.AbstractImagStoreService |
lambda$distinctByKey$0 首参 Set → ConcurrentHashMap$KeySetView |
A | 视为编译器/具体化差异;行为以方法体为准(可抽查 javap -c) |
| 2 | …common.JsonUtils |
lambda$toStrList$1 中 List → ArrayList |
A | 无 public 变化 |
| 3 | …common.OkhttpUtil |
新增 lambda$postJson$1(…) |
A | postJson 重载实现略调;确认与 HTTP 头/体一致后接受 |
| 4 | …config.ChannelFileReader |
本地 implements AutoCloseable(javap 首行与现场不同);现场仍有 close() |
B | CommonAppExportExecuteTask 使用 try-with-resources,保留 AutoCloseable;接受与现场 javap 字符串不一致或与现场合并策略 |
| 5 | …service.CertRegistryHandler |
lambda$null$4/5 形参列表简化(Optional/交叉类型 → 单类型) |
A | 典型 Stream/Optional 链改写;公开方法未变 |
| 6 | …CpDeviceImagePersonServiceImpl |
personPassRule 相关 lambda 合并/删减 |
A | public 段一致;属实现整理 |
| 7 | …CpImageStorePersonManager |
多组 lambda$null$* 删除,编号下移 |
A | 同上 |
| 8 | …CpImageStorePersonSynManager |
Redis 回调 lambda 返回类型 Long → Object |
A | JDK8 RedisConnection 泛型与 lambda 桥接常见现象 |
| 9 | …CpImageStorePersonValidateManager |
大量 lambda$* 重排、嵌套 lambda 命名变化 |
A | patch 行数最大,仍以 synthetic 为主;建议用业务用例回归(校验任务、延期校验) |
| 10 | …CpImageStoreServiceImpl |
packageCpResult/packageImageStoreResult/getAssociated 等 lambda 编号与具体类型 |
A | public 未变 |
| 11 | …CpImageStoreToolServiceImpl |
lambda$batchRemoveFace$5 少一参(去掉 BatchRemoveFaceParam) |
A | 对外接口未变;实现层闭包捕获范围变化 |
| 12 | …DeviceGroupRefChangeEventHandler |
HashSet vs Set 于一处 lambda |
A | 无 public 变化 |
| 13 | …DevicePersonSyncManager |
lambda$null$2 形参类型变化 |
A | 无 public 变化 |
| 14 | …DevicePersonSyncServiceImpl |
删除两行 deviceImageStoreMap 相关 lambda |
A | public 未变 |
| 15 | …ImgPersonServiceImpl |
新增字段 tenantVisitorFloorPolicyService;新增私有方法 buildCommaSeparatedFloorNames、buildFloorInfoListFromOrderedZoneIds |
C | 星河湾租户访客楼层增强;发版说明与联调必测 |
| 16 | …OrganizationServiceImpl |
detail/listNames/saveAreaDetails 路径下 lambda 数量与编号变化(增加 ZoneUnitResultDTO 等参与) |
A/C | javap 前半段 public 方法与现场一致;若产品关心 detail 返回中区域/楼层展示,做专项对比测试 |
| 17 | …starter.task.ComponentTaskInitialize |
现场多 lambda$run$0(String),本地无 |
A | 与 定时/初始化路径实现差异一致(如去掉一处 stream);启动后看日志与任务是否注册 |
| 18 | …controller.DevicePersonSyncController |
devicePersonResync/detail 的 lambda 个数与参数类型 |
A | 三个 public API 未变;可做 elevator API 对拍 |
3. 与《全量审计》§4 的关系
- OpenCvUtils 已与现场
javapIDENTICAL(见 §2.1)。 - ImgPersonServiceImpl(表 2.2 #15) 为已知的仓库超前能力,与 MISSING_DEPLOY(租户策略等) 配套部署后才能在现场 classpath 出现对应依赖类。
- 其余类以 A 类为主:契约测试(接口级)可通过;集成回归仍建议覆盖图库同步、设备同步、组织详情。
4. 复现核对命令(可选)
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH="$JAVA_HOME/bin:$PATH"
# 设置 D_CP / L_CP 同本文档前言,然后:
javap -p -classpath "$D_CP" cn.cloudwalk.service.organization.common.OpenCvUtils > /tmp/deploy.txt
javap -p -classpath "$L_CP" cn.cloudwalk.service.organization.common.OpenCvUtils > /tmp/local.txt
diff -u /tmp/deploy.txt /tmp/local.txt
批量产物已由流水线写入:tools/out/different-22-javap/diff-<ShortName>.patch。
关联: [2026-05-06-component-org-full-java-audit-and-remediation.md](./2026-05-06-component-org-full-java-audit-and-remediation.md) §4(DIFFERENT 分类说明)