Skip to content
This repository was archived by the owner on Jan 25, 2026. It is now read-only.

Commit d8093e8

Browse files
authored
fix: 修复 Java 版本自动选择错误 (#167)
* fix: 修复 Java 版本自动选择错误 * make it static
1 parent e27d99d commit d8093e8

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

Minecraft/JavaManager.cs

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,15 +112,35 @@ public async Task<List<JavaInfo>> SelectSuitableJava(Version minVersion, Version
112112
{
113113
if (InternalJavas.Count == 0)
114114
await ScanJavaAsync();
115-
var minMajorVersion = minVersion.Major == 1 ? minVersion.Minor : minVersion.Major;
116-
var maxMajorVersion = maxVersion.Major == 1 ? maxVersion.Minor : maxVersion.Major;
115+
117116
return (from j in InternalJavas
118117
where j.IsStillAvailable && j.IsEnabled
119-
&& j.JavaMajorVersion >= minMajorVersion && j.JavaMajorVersion <= maxMajorVersion
120-
&& j.Version >= minVersion && j.Version <= maxVersion
118+
&& IsJavaVersionSuitable(j.Version, minVersion, maxVersion)
121119
orderby j.Version, j.IsJre, j.Brand // 选择最小版本的 JDK 中的合适品牌的 Java
122120
select j).ToList();
123121
}
122+
123+
/// <summary>
124+
/// 将 Java 版本转换为统一格式进行比较
125+
/// 例如:1.8.0.140 → 8.0.140,8.0.472 → 8.0.472,9.0.1 → 9.0.1
126+
/// </summary>
127+
private static Version NormalizeJavaVersion(Version version)
128+
{
129+
return version.Major == 1 ? new Version(version.Minor, version.Build, version.Revision) : version;
130+
}
131+
132+
/// <summary>
133+
/// 检查 Java 版本是否在指定范围内
134+
/// </summary>
135+
private static bool IsJavaVersionSuitable(Version javaVersion, Version minVersion, Version maxVersion)
136+
{
137+
// 将所有版本转换为统一格式进行比较
138+
var normalizedJava = NormalizeJavaVersion(javaVersion);
139+
var normalizedMin = NormalizeJavaVersion(minVersion);
140+
var normalizedMax = NormalizeJavaVersion(maxVersion);
141+
142+
return normalizedJava >= normalizedMin && normalizedJava <= normalizedMax;
143+
}
124144

125145
/// <summary>
126146
/// 检查并移除已不存在的 Java

0 commit comments

Comments
 (0)