OneLauncher-Cracked/packages/oneclient_java/assets/java/JavaInfo.java
LynithDev f8f6ef8f07 Revert "fix: stop rejecting java installations over an awt probe"
This reverts commit 22edf1e9dac3051a6d3641b07c5aad1030571e1c.
2026-09-06 00:14:11 +02:00

98 lines
2.9 KiB
Java

import java.io.File;
import java.util.Locale;
public final class JavaInfo {
private static final String[] CHECKED_PROPERTIES = new String[] {"os.arch", "java.version", "java.vendor", "java.home"};
public static void main(String[] args) {
int returnCode = 0;
for (String key : CHECKED_PROPERTIES) {
String property = System.getProperty(key);
if (property != null) {
System.out.println(key + "=" + property);
} else {
returnCode = 1;
}
}
System.out.println("java.awt=" + hasClass("java.awt.Toolkit"));
System.out.println("java.awt.natives=" + hasAwtNatives());
System.out.println("java.awt.link=" + awtLinks());
System.out.println("java.jdk=" + hasCompiler());
System.exit(returnCode);
}
/** Loads the class without initialising it, so no display is ever needed. */
private static boolean hasClass(String name) {
try {
Class.forName(name, false, JavaInfo.class.getClassLoader());
return true;
} catch (Throwable ignored) {
return false;
}
}
private static boolean hasAwtNatives() {
try {
String os = System.getProperty("os.name", "").toLowerCase(Locale.ROOT);
String[] required;
if (os.contains("win")) {
required = new String[] {"awt.dll", "fontmanager.dll"};
} else if (os.contains("mac") || os.contains("darwin")) {
required = new String[] {"libawt_lwawt.dylib", "libfontmanager.dylib"};
} else {
required = new String[] {"libawt_xawt.so", "libfontmanager.so"};
}
for (String name : required) {
if (!findNative(name)) {
return false;
}
}
return true;
} catch (Throwable ignored) {
return false;
}
}
private static boolean findNative(String name) {
File home = new File(System.getProperty("java.home", "."));
File[] roots = new File[] {
new File(home, "lib"),
new File(home, "bin"),
new File(new File(home, "lib"), System.getProperty("os.arch", "")),
};
for (File root : roots) {
if (new File(root, name).isFile()) {
return true;
}
}
return false;
}
private static boolean awtLinks() {
try {
java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getClass();
return true;
} catch (LinkageError broken) {
return false;
} catch (Throwable ignored) {
return true;
}
}
private static boolean hasCompiler() {
try {
return javax.tools.ToolProvider.getSystemJavaCompiler() != null;
} catch (Throwable ignored) {
return false;
}
}
}