用户反馈现象
用户反馈:
- 环境医生能发现当前 Java 版本,但感觉不能直接管理。
- JDK 管理中发现
JAVA_HOME 与用户 PATH 首个 java.exe 不一致。
- 用户认为 Java 不一致时可以统一到本机某个版本。
- 对非受管 JDK,用户认为虽然不能卸载,但也应该能作为候选被验证和用于环境配置。
问题判断
1.5.1 已经具备环境可靠性中心和 Java 稳定修复计划,但用户反馈说明:
- 环境医生、版本管理、环境页之间的入口联动可能仍不够直观。
- JDK 候选项需要更清晰地区分受管、外部、IDE 内置、第三方管理器来源。
- 外部 JDK 应允许“设为 JAVA_HOME / 生成稳定修复计划 / 验证 Maven/Gradle/Nacos/Nexus”,但绝不允许卸载或删除。
影响范围
该问题可能影响:
- 环境医生 Java 检查项。
- 版本管理 JDK 页面。
- 环境可靠性中心。
- Maven/Gradle Java 使用检查。
- Nacos/Nexus Java 消费者验证。
- 项目启动向导中的 IDEA JDK 匹配建议。
修复目标
统一 Java/JDK 候选管理模型:
受管 JDK:可切换、可验证、可卸载。
外部 JDK:可验证、可设为 JAVA_HOME、可生成修复计划、不可卸载。
IDE 内置 JDK:只提示、可作为证据、默认不接管、不卸载。
第三方管理器 JDK:只提示来源,可验证,可建议用户回到对应工具管理。
具体要求
1. JDK 候选项分类
增加或统一字段:
JdkCandidate {
path: String,
version: String,
sourceKind: String, // managed / external / ide_bundled / scoop / choco / unknown
javaExists: bool,
javacExists: bool,
canUseAsJavaHome: bool,
canUninstall: bool,
warning: String,
}
2. 外部 JDK 操作
外部 JDK 允许:
- 检查完整性。
- 复制路径。
- 打开目录。
- 生成 Java 稳定修复计划。
- 设为用户级
JAVA_HOME,但必须有 diff、备份、确认、验证。
- 验证 Maven、Gradle、Nacos、Nexus 能否读取。
外部 JDK 禁止:
- 删除目录。
- 移入回收站。
- 当成 DevEnv Manager 受管版本卸载。
- 自动接管第三方管理器目录。
3. 环境医生联动
当环境医生发现 Java 问题时,检查项右侧应提供明确行动入口:
查看 JDK 候选
检查当前 JDK
生成 Java 稳定修复计划
查看 PATH 命中详情
验证 Maven/Gradle Java
验证 Nacos/Nexus Java
不要只告诉用户“发现冲突”,还要告诉下一步点哪里。
4. UI 文案
示例:
这是外部安装的 JDK。DevEnv Manager 可以使用它作为 JAVA_HOME,并验证 Maven/Gradle/Nacos/Nexus 是否能读取,但不会卸载或删除该目录。
如果 JAVA_HOME 与 PATH 首个 Java 不一致:
当前 JAVA_HOME 指向 JDK 21,但 PATH 首个 java.exe 来自 JDK 17。建议选择一个 JDK 作为统一生效版本,并生成 Java 稳定修复计划。
测试要求
新增测试或 mock:
- 外部 JDK 可生成 Java 稳定修复计划。
- 外部 JDK 不显示卸载按钮。
- IDE 内置 JDK 不显示卸载按钮。
- 受管 JDK 显示卸载受管版本。
- JAVA_HOME 与 PATH 首个 Java 不一致时给出行动建议。
- 缺少 javac.exe 的 JDK 不能设为完整 JDK。
验收标准
- 环境医生 Java 问题可以跳转到对应管理/修复入口。
- 外部 JDK 能被验证并设为 JAVA_HOME 候选。
- 外部 JDK 不能被删除或卸载。
- JDK 候选来源和可操作范围清晰显示。
cargo test --all-targets 通过。
npm run build 通过。
用户反馈现象
用户反馈:
JAVA_HOME与用户 PATH 首个java.exe不一致。问题判断
1.5.1 已经具备环境可靠性中心和 Java 稳定修复计划,但用户反馈说明:
影响范围
该问题可能影响:
修复目标
统一 Java/JDK 候选管理模型:
具体要求
1. JDK 候选项分类
增加或统一字段:
2. 外部 JDK 操作
外部 JDK 允许:
JAVA_HOME,但必须有 diff、备份、确认、验证。外部 JDK 禁止:
3. 环境医生联动
当环境医生发现 Java 问题时,检查项右侧应提供明确行动入口:
不要只告诉用户“发现冲突”,还要告诉下一步点哪里。
4. UI 文案
示例:
如果 JAVA_HOME 与 PATH 首个 Java 不一致:
测试要求
新增测试或 mock:
验收标准
cargo test --all-targets通过。npm run build通过。