不再使用反射调用 Java 9~11 中引入的 API (#4114)

This commit is contained in:
Glavo
2025-07-25 17:02:37 +08:00
committed by GitHub
parent 24d3bbf4fe
commit 96f68e1017
23 changed files with 64 additions and 354 deletions

View File

@@ -17,10 +17,6 @@
*/
package org.jackhuang.hmcl;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
public final class JavaFXLauncher {
private JavaFXLauncher() {
@@ -31,21 +27,9 @@ public final class JavaFXLauncher {
static {
// init JavaFX Toolkit
try {
// Java 9 or Latter
final MethodHandle startup =
MethodHandles.publicLookup().findStatic(
javafx.application.Platform.class, "startup", MethodType.methodType(void.class, Runnable.class));
startup.invokeExact((Runnable) () -> {
javafx.application.Platform.startup(() -> {
});
started = true;
} catch (NoSuchMethodException e) {
// Java 8
try {
Class.forName("javafx.embed.swing.JFXPanel").getDeclaredConstructor().newInstance();
started = true;
} catch (Throwable e0) {
e0.printStackTrace();
}
} catch (IllegalStateException e) {
started = true;
} catch (Throwable e) {