HMCL-dev / HMCL

A Minecraft Launcher which is multi-functional, cross-platform and popular
https://hmcl.huangyuhui.net
GNU General Public License v3.0
6.57k stars 662 forks source link

[Enhancement] 无法识别从 sdkman 安装的未选中的 Java 版本 #3043

Open vochant opened 1 month ago

vochant commented 1 month ago

描述 |Description

  1. 在 Linux 系统安装 sdkman,不保证所有发行版都存在这个问题
  2. 使用 sdkman 安装多个 Java 版本
  3. 下载并打开 HMCL 启动器
  4. 在设置->全局游戏设置->Java路径中,对于 sdkman 安装的 Java 仅能识别当前选中的
burningtnt commented 1 month ago

请确认其他未选中的 Java 版本真实存在于文件系统中

vochant commented 1 month ago

请确认其他未选中的 Java 版本真实存在于文件系统中

是的,所有Java版本均位于 <path_to_sdkman>/candidates/java/<version> 下,且手动选择可以正常使用。sdkman 只会为选中的版本添加 PATH。

burningtnt commented 1 month ago

…… 那就只是因为 HMCL 没有扫这个路径。你可以为 HMCL 添加一个。

vochant commented 1 month ago

改成 feature 倒不要紧,不过能加到更新计划里面吗?

zkitefly commented 1 month ago

https://github.com/HMCL-dev/HMCL/pull/2988

这里的 添加 Java 能否满足需求

burningtnt commented 1 month ago

2988

这里的 添加 Java 能否满足需求

是可以解决的

vochant commented 1 month ago

就是说把这个加到扫描路径里面?

vochant commented 1 month ago

希望就是说默认包含这个路径,毕竟 Linux 的 sdkman 应该还算有用的

zkitefly commented 1 month ago
/candidates/java/ 是固定的吗
zkitefly commented 1 month ago

就是说把这个加到扫描路径里面?

手动添加 Java 路径,不是扫描

vochant commented 1 month ago
/candidates/java/ 的 是固定的吗

存在环境变量 SDKMAN_DIR,但是是在 *shrc 这种文件而不是 profile 中定义,通常是~/.sdkman。具体可以安装一个试试看。

vochant commented 1 month ago

和 Homebrew 的那个 issue 道理差不多,本来就是两个第三方包管理器。另外 sdkman 除了 Linux 和 macOS 还支持 MSYS、Cygwin 这些,确实有些复杂,也没必要全都支持。至于 Linux 大多数人也不会想着改安装路径,直接用 ~/.sdkman 已经能解决绝大多数的情况了。

burningtnt commented 1 month ago

你可以大胆直接推个 PR。现在 HMCL 很多功能没有做只是因为没人写代码() 你只要敢做我们就敢合

vochant commented 1 month ago

问题是人家是用户,代码架构长什么样都不知道,甚至未必会Java()

有空可以去看看,但一时半会的真的搞不定,是否存在哪位愿意整合一下这些常见的包管理器的

zkitefly commented 1 month ago

可以参考 https://github.com/HMCL-dev/HMCL/pull/3035

burningtnt commented 1 month ago

如果你给出足够的理由,那才能撬动我们把你这个 issue 拍到高优先级