mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-11 04:46:18 -04:00
Do not automatically select Java non for x86 and x86-64
This commit is contained in:
parent
42a40a844a
commit
21e44bbc90
@ -546,10 +546,8 @@ public final class VersionSettingsPage extends StackPane implements DecoratorPag
|
|||||||
memoryStatus.set(OperatingSystem.getPhysicalMemoryStatus().orElse(OperatingSystem.PhysicalMemoryStatus.INVALID));
|
memoryStatus.set(OperatingSystem.getPhysicalMemoryStatus().orElse(OperatingSystem.PhysicalMemoryStatus.INVALID));
|
||||||
|
|
||||||
Task.supplyAsync(JavaVersion::getJavas).thenAcceptAsync(Schedulers.javafx(), list -> {
|
Task.supplyAsync(JavaVersion::getJavas).thenAcceptAsync(Schedulers.javafx(), list -> {
|
||||||
boolean isX86 = (Architecture.SYSTEM_ARCH == Architecture.X86 || Architecture.SYSTEM_ARCH == Architecture.X86_64)
|
boolean isX86 = (Architecture.SYSTEM_ARCH.isX86())
|
||||||
&& list.stream()
|
&& list.stream().allMatch(java -> java.getArchitecture().isX86());
|
||||||
.map(java -> java.getPlatform().getArchitecture())
|
|
||||||
.allMatch(arch -> arch == Architecture.X86 || arch == Architecture.X86_64);
|
|
||||||
|
|
||||||
// boolean showSystem = list.stream().anyMatch(java -> java.getPlatform().getOperatingSystem() != OperatingSystem.CURRENT_OS);
|
// boolean showSystem = list.stream().anyMatch(java -> java.getPlatform().getOperatingSystem() != OperatingSystem.CURRENT_OS);
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ public enum JavaVersionConstraint {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean checkJava(VersionNumber gameVersionNumber, Version version, JavaVersion javaVersion) {
|
public boolean checkJava(VersionNumber gameVersionNumber, Version version, JavaVersion javaVersion) {
|
||||||
return javaVersion.getArchitecture() == Architecture.X86 || javaVersion.getArchitecture() == Architecture.X86_64;
|
return javaVersion.getArchitecture().isX86();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -173,17 +173,20 @@ public enum JavaVersionConstraint {
|
|||||||
JavaVersion mandatory = null;
|
JavaVersion mandatory = null;
|
||||||
JavaVersion suggested = null;
|
JavaVersion suggested = null;
|
||||||
for (JavaVersion javaVersion : JavaVersion.getJavas()) {
|
for (JavaVersion javaVersion : JavaVersion.getJavas()) {
|
||||||
// select the latest java version that this version accepts.
|
// select the latest x86 java that this version accepts.
|
||||||
|
if(!javaVersion.getArchitecture().isX86())
|
||||||
|
continue;
|
||||||
|
|
||||||
VersionNumber javaVersionNumber = javaVersion.getVersionNumber();
|
VersionNumber javaVersionNumber = javaVersion.getVersionNumber();
|
||||||
if (range.getMandatory().contains(javaVersionNumber)) {
|
if (range.getMandatory().contains(javaVersionNumber)) {
|
||||||
if (mandatory == null) mandatory = javaVersion;
|
if (mandatory == null) mandatory = javaVersion;
|
||||||
else if (javaVersionNumber.compareTo(mandatory.getVersionNumber()) > 0) {
|
else if (compareJavaVersion(javaVersion, mandatory) > 0) {
|
||||||
mandatory = javaVersion;
|
mandatory = javaVersion;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (range.getSuggested().contains(javaVersionNumber)) {
|
if (range.getSuggested().contains(javaVersionNumber)) {
|
||||||
if (suggested == null) suggested = javaVersion;
|
if (suggested == null) suggested = javaVersion;
|
||||||
else if (javaVersionNumber.compareTo(suggested.getVersionNumber()) > 0) {
|
else if (compareJavaVersion(javaVersion, suggested) > 0) {
|
||||||
suggested = javaVersion;
|
suggested = javaVersion;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -193,6 +196,21 @@ public enum JavaVersionConstraint {
|
|||||||
else return mandatory;
|
else return mandatory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static int compareJavaVersion(JavaVersion javaVersion1, JavaVersion javaVersion2) {
|
||||||
|
Architecture arch1 = javaVersion1.getArchitecture();
|
||||||
|
Architecture arch2 = javaVersion2.getArchitecture();
|
||||||
|
|
||||||
|
if (arch1 != arch2) {
|
||||||
|
if (arch1 == Architecture.X86_64) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if (arch2 == Architecture.X86_64) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return javaVersion1.getVersionNumber().compareTo(javaVersion2.getVersionNumber());
|
||||||
|
}
|
||||||
|
|
||||||
public static final int RULE_MANDATORY = 1;
|
public static final int RULE_MANDATORY = 1;
|
||||||
public static final int RULE_SUGGESTED = 2;
|
public static final int RULE_SUGGESTED = 2;
|
||||||
|
|
||||||
|
@ -82,6 +82,10 @@ public enum Architecture {
|
|||||||
return displayName;
|
return displayName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isX86() {
|
||||||
|
return this == X86 || this == X86_64;
|
||||||
|
}
|
||||||
|
|
||||||
public static final String CURRENT_ARCH_NAME;
|
public static final String CURRENT_ARCH_NAME;
|
||||||
public static final Architecture CURRENT_ARCH;
|
public static final Architecture CURRENT_ARCH;
|
||||||
public static final Architecture SYSTEM_ARCH;
|
public static final Architecture SYSTEM_ARCH;
|
||||||
|
@ -48,12 +48,14 @@ public final class JavaVersion {
|
|||||||
private final String longVersion;
|
private final String longVersion;
|
||||||
private final Platform platform;
|
private final Platform platform;
|
||||||
private final int version;
|
private final int version;
|
||||||
|
private final VersionNumber versionNumber;
|
||||||
|
|
||||||
public JavaVersion(Path binary, String longVersion, Platform platform) {
|
public JavaVersion(Path binary, String longVersion, Platform platform) {
|
||||||
this.binary = binary;
|
this.binary = binary;
|
||||||
this.longVersion = longVersion;
|
this.longVersion = longVersion;
|
||||||
this.platform = platform;
|
this.platform = platform;
|
||||||
version = parseVersion(longVersion);
|
version = parseVersion(longVersion);
|
||||||
|
versionNumber = VersionNumber.asVersion(longVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Path getBinary() {
|
public Path getBinary() {
|
||||||
@ -77,7 +79,7 @@ public final class JavaVersion {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public VersionNumber getVersionNumber() {
|
public VersionNumber getVersionNumber() {
|
||||||
return VersionNumber.asVersion(longVersion);
|
return versionNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user