fix(multiplayer): should not show unsupported platform when running on 32-bit Java, but 64-bit OS.

This commit is contained in:
huanghongxun
2021-10-12 23:06:13 +08:00
parent ec3dfb908c
commit 3ac16b15c6
9 changed files with 24 additions and 23 deletions

View File

@@ -62,19 +62,19 @@ public final class JavaRepository {
public static Optional<String> getCurrentJavaPlatform() {
if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX) {
if (Architecture.CURRENT == Architecture.X86) {
if (Architecture.SYSTEM == Architecture.X86) {
return Optional.of("linux-i386");
} else if (Architecture.CURRENT == Architecture.X86_64) {
} else if (Architecture.SYSTEM == Architecture.X86_64) {
return Optional.of("linux");
}
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX) {
if (Architecture.CURRENT == Architecture.X86_64) {
if (Architecture.SYSTEM == Architecture.X86_64) {
return Optional.of("mac-os");
}
} else if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) {
if (Architecture.CURRENT == Architecture.X86) {
if (Architecture.SYSTEM == Architecture.X86) {
return Optional.of("windows-x86");
} else if (Architecture.CURRENT == Architecture.X86_64) {
} else if (Architecture.SYSTEM == Architecture.X86_64) {
return Optional.of("windows-x64");
}
}

View File

@@ -84,7 +84,7 @@ public enum JavaVersionConstraint {
VANILLA_LINUX_JAVA_8(JavaVersionConstraint.RULE_MANDATORY, versionRange("0", "1.12.999"), versionRange(JavaVersionConstraint.MIN, "1.8.999")) {
@Override
public boolean appliesToVersion(@Nullable VersionNumber gameVersion, @Nullable Version version) {
return OperatingSystem.CURRENT_OS == OperatingSystem.LINUX && Architecture.CURRENT == Architecture.X86_64;
return OperatingSystem.CURRENT_OS == OperatingSystem.LINUX && Architecture.SYSTEM == Architecture.X86_64;
}
}
;

View File

@@ -24,8 +24,8 @@ import org.jackhuang.hmcl.util.Immutable;
import org.jackhuang.hmcl.util.ToStringBuilder;
import org.jackhuang.hmcl.util.gson.TolerableValidationException;
import org.jackhuang.hmcl.util.gson.Validation;
import org.jackhuang.hmcl.util.platform.Architecture;
import org.jackhuang.hmcl.util.platform.OperatingSystem;
import org.jackhuang.hmcl.util.platform.Platform;
import java.util.List;
import java.util.Map;
@@ -94,7 +94,7 @@ public class Library implements Comparable<Library>, Validation {
public String getClassifier() {
if (artifact.getClassifier() == null)
if (natives != null && natives.containsKey(OperatingSystem.CURRENT_OS))
return natives.get(OperatingSystem.CURRENT_OS).replace("${arch}", Platform.getPlatform().getBit());
return natives.get(OperatingSystem.CURRENT_OS).replace("${arch}", Architecture.SYSTEM.getPlatform().getBit());
else
return null;
else

View File

@@ -58,7 +58,8 @@ public enum Architecture {
}
public static final String SYSTEM_ARCHITECTURE;
public static final Architecture CURRENT;
public static final Architecture JDK;
public static final Architecture SYSTEM;
private static Architecture normalizeArch(String value) {
value = normalize(value);
@@ -151,7 +152,7 @@ public enum Architecture {
static {
SYSTEM_ARCHITECTURE = System.getProperty("os.arch");
CURRENT = Optional.ofNullable(normalizeProcessorArchitecture())
.orElseGet(() -> normalizeArch(SYSTEM_ARCHITECTURE));
JDK = normalizeArch(SYSTEM_ARCHITECTURE);
SYSTEM = Optional.ofNullable(normalizeProcessorArchitecture()).orElse(JDK);
}
}

View File

@@ -163,7 +163,7 @@ public final class JavaVersion {
CURRENT_JAVA = new JavaVersion(
currentExecutable,
System.getProperty("java.version"),
Platform.getPlatform());
Architecture.JDK.getPlatform());
}
private static Collection<JavaVersion> JAVAS;