From bcd47df4a71ff95c1f37b41bc7847ff75adf6fef Mon Sep 17 00:00:00 2001 From: ShirosakiMio <852468399@qq.com> Date: Wed, 11 Sep 2024 21:16:35 +0800 Subject: [PATCH] fix #580 --- .../com/tungsten/fcl/activity/MainActivity.kt | 5 +++- .../tungsten/fcl/game/JarExecutorHelper.java | 28 ++++++++++++------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/FCL/src/main/java/com/tungsten/fcl/activity/MainActivity.kt b/FCL/src/main/java/com/tungsten/fcl/activity/MainActivity.kt index 63babfd4..d1f45298 100644 --- a/FCL/src/main/java/com/tungsten/fcl/activity/MainActivity.kt +++ b/FCL/src/main/java/com/tungsten/fcl/activity/MainActivity.kt @@ -176,7 +176,10 @@ class MainActivity : FCLActivity(), OnSelectListener, View.OnClickListener { .setView(layout) .setPositiveButton(com.tungsten.fcllibrary.R.string.dialog_positive) { _: DialogInterface?, _: Int -> JarExecutorHelper.exec( - this@MainActivity, null, 8, editText.text.toString() + this@MainActivity, + null, + JarExecutorHelper.getJava(null), + editText.text.toString() ) } .setNegativeButton(com.tungsten.fcllibrary.R.string.dialog_negative, null) diff --git a/FCL/src/main/java/com/tungsten/fcl/game/JarExecutorHelper.java b/FCL/src/main/java/com/tungsten/fcl/game/JarExecutorHelper.java index 9c7ce8c8..6ca77ddc 100644 --- a/FCL/src/main/java/com/tungsten/fcl/game/JarExecutorHelper.java +++ b/FCL/src/main/java/com/tungsten/fcl/game/JarExecutorHelper.java @@ -59,16 +59,7 @@ public class JarExecutorHelper { } private static void launchJarExecutor(Context context, File file) { - int version = getJavaVersion(file); - int javaVersion = getNearestJavaVersion(version); - Profile profile = Profiles.getSelectedProfile(); - if (profile != null) { - String java = profile.getGlobal().getJava(); - if (!java.equals(JavaVersion.JAVA_AUTO.getVersionName())) { - javaVersion = JavaVersion.getJavaFromVersionName(java).getVersion(); - } - } - exec(context, file, javaVersion, null); + exec(context, file, getJava(file), null); } public static void exec(Context context, File file, int javaVersion, String args) { @@ -90,6 +81,22 @@ public class JarExecutorHelper { } } + public static int getJava(File file) { + int javaVersion = JavaVersion.JAVA_VERSION_8; + if (file != null) { + int version = getJavaVersion(file); + javaVersion = getNearestJavaVersion(version); + } + Profile profile = Profiles.getSelectedProfile(); + if (profile != null) { + String java = profile.getGlobal().getJava(); + if (!java.equals(JavaVersion.JAVA_AUTO.getVersionName())) { + javaVersion = JavaVersion.getJavaFromVersionName(java).getVersion(); + } + } + return javaVersion; + } + private static int getNearestJavaVersion(int majorVersion) { if (majorVersion > JavaVersion.JAVA_VERSION_17) return JavaVersion.JAVA_VERSION_21; @@ -135,6 +142,7 @@ public class JarExecutorHelper { return -1; } } + private static int classVersionToJavaVersion(int majorVersion) { if (majorVersion < 46) return 2;