diff --git a/Launcher/src/main/java/pro/gravit/launcher/client/ClientClassLoader.java b/Launcher/src/main/java/pro/gravit/launcher/client/ClientClassLoader.java index 82e7a38b..624ed0d1 100644 --- a/Launcher/src/main/java/pro/gravit/launcher/client/ClientClassLoader.java +++ b/Launcher/src/main/java/pro/gravit/launcher/client/ClientClassLoader.java @@ -77,25 +77,7 @@ protected Class loadClass(String name, boolean resolve) throws ClassNotFoundE @Override public String findLibrary(String name) { - return nativePath.concat(IOHelper.PLATFORM_SEPARATOR).concat(getNativePrefix()).concat(name).concat(getNativeEx()); - } - - public String getNativeEx() { - if (JVMHelper.OS_TYPE == JVMHelper.OS.MUSTDIE) - return ".dll"; - else if (JVMHelper.OS_TYPE == JVMHelper.OS.LINUX) - return ".so"; - else if (JVMHelper.OS_TYPE == JVMHelper.OS.MACOSX) - return ".dylib"; - return ""; - } - - public String getNativePrefix() { - if (JVMHelper.OS_TYPE == JVMHelper.OS.LINUX) - return "lib"; - else if (JVMHelper.OS_TYPE == JVMHelper.OS.MACOSX) - return "lib"; - return ""; + return nativePath.concat(IOHelper.PLATFORM_SEPARATOR).concat(JVMHelper.NATIVE_PREFIX).concat(name).concat(JVMHelper.NATIVE_EXTENSION); } public void addAllowedPackage(String pkg) { diff --git a/LauncherCore/src/main/java/pro/gravit/utils/helper/JVMHelper.java b/LauncherCore/src/main/java/pro/gravit/utils/helper/JVMHelper.java index 1ec88240..cf95e57e 100644 --- a/LauncherCore/src/main/java/pro/gravit/utils/helper/JVMHelper.java +++ b/LauncherCore/src/main/java/pro/gravit/utils/helper/JVMHelper.java @@ -24,6 +24,8 @@ public final class JVMHelper { // System properties public static final String OS_VERSION = OPERATING_SYSTEM_MXBEAN.getVersion(); public static final ARCH ARCH_TYPE = getArch(System.getProperty("os.arch")); + public static final String NATIVE_EXTENSION = getNativeExtension(OS_TYPE); + public static final String NATIVE_PREFIX = getNativePrefix(OS_TYPE); public static final int JVM_BITS = Integer.parseInt(System.getProperty("sun.arch.data.model")); // Public static fields public static final Runtime RUNTIME = Runtime.getRuntime(); @@ -82,6 +84,29 @@ public static int getBuild() { } + public static String getNativeExtension(JVMHelper.OS OS_TYPE) { + switch (OS_TYPE) { + case MUSTDIE: + return ".dll"; + case LINUX: + return ".so"; + case MACOSX: + return ".dylib"; + default: + throw new InternalError(String.format("Unsupported OS TYPE '%s'", OS_TYPE)); + } + } + + public static String getNativePrefix(JVMHelper.OS OS_TYPE) { + switch (OS_TYPE) { + case LINUX: + case MACOSX: + return "lib"; + default: + return ""; + } + } + public static void appendVars(ProcessBuilder builder, Map vars) { builder.environment().putAll(vars); } @@ -179,7 +204,6 @@ public static void verifySystemProperties(Class mainClass, boolean requireSys LogHelper.debug("Verifying JVM architecture"); } - public enum ARCH { X86("x86"), X86_64("x86-64"), ARM64("arm64"), ARM32("arm32"); diff --git a/LauncherCore/src/main/java11/pro/gravit/utils/helper/JVMHelper.java b/LauncherCore/src/main/java11/pro/gravit/utils/helper/JVMHelper.java index e96e532c..ca8ff03a 100644 --- a/LauncherCore/src/main/java11/pro/gravit/utils/helper/JVMHelper.java +++ b/LauncherCore/src/main/java11/pro/gravit/utils/helper/JVMHelper.java @@ -20,13 +20,12 @@ public final class JVMHelper { public static final OperatingSystemMXBean OPERATING_SYSTEM_MXBEAN = ManagementFactory.getOperatingSystemMXBean(); public static final OS OS_TYPE = OS.byName(OPERATING_SYSTEM_MXBEAN.getName()); + public static final int OS_BITS = getCorrectOSArch(); // System properties public static final String OS_VERSION = OPERATING_SYSTEM_MXBEAN.getVersion(); - - public static final int OS_BITS = getCorrectOSArch(); - public static final ARCH ARCH_TYPE = getArch(System.getProperty("os.arch")); - + public static final String NATIVE_EXTENSION = getNativeExtension(OS_TYPE); + public static final String NATIVE_PREFIX = getNativePrefix(OS_TYPE); public static final int JVM_BITS = Integer.parseInt(System.getProperty("sun.arch.data.model")); // Public static fields public static final Runtime RUNTIME = Runtime.getRuntime(); @@ -45,21 +44,11 @@ public final class JVMHelper { private JVMHelper() { } - public enum ARCH { - X86("x86"), X86_64("x86-64"), ARM64("arm64"), ARM32("arm32"); - - public final String name; - - ARCH(String name) { - this.name = name; - } - } - public static ARCH getArch(String arch) { - if(arch.equals("amd64") || arch.equals("x86-64") || arch.equals("x86_64")) return ARCH.X86_64; - if(arch.equals("i386") || arch.equals("i686") || arch.equals("x86")) return ARCH.X86; - if(arch.startsWith("armv8") || arch.startsWith("aarch64")) return ARCH.ARM64; - if(arch.startsWith("arm") || arch.startsWith("aarch32")) return ARCH.ARM32; + if (arch.equals("amd64") || arch.equals("x86-64") || arch.equals("x86_64")) return ARCH.X86_64; + if (arch.equals("i386") || arch.equals("i686") || arch.equals("x86")) return ARCH.X86; + if (arch.startsWith("armv8") || arch.startsWith("aarch64")) return ARCH.ARM64; + if (arch.startsWith("arm") || arch.startsWith("aarch32")) return ARCH.ARM32; throw new InternalError(String.format("Unsupported arch '%s'", arch)); } @@ -72,6 +61,29 @@ public static int getBuild() { return Runtime.version().update(); } + public static String getNativeExtension(JVMHelper.OS OS_TYPE) { + switch (OS_TYPE) { + case MUSTDIE: + return ".dll"; + case LINUX: + return ".so"; + case MACOSX: + return ".dylib"; + default: + throw new InternalError(String.format("Unsupported OS TYPE '%s'", OS_TYPE)); + } + } + + public static String getNativePrefix(JVMHelper.OS OS_TYPE) { + switch (OS_TYPE) { + case LINUX: + case MACOSX: + return "lib"; + default: + return ""; + } + } + public static void appendVars(ProcessBuilder builder, Map vars) { builder.environment().putAll(vars); } @@ -86,19 +98,16 @@ public static Class firstClass(String... names) throws ClassNotFoundException throw new ClassNotFoundException(Arrays.toString(names)); } - public static void fullGC() { RUNTIME.gc(); RUNTIME.runFinalization(); LogHelper.debug("Used heap: %d MiB", RUNTIME.totalMemory() - RUNTIME.freeMemory() >> 20); } - public static String[] getClassPath() { return System.getProperty("java.class.path").split(File.pathSeparator); } - public static URL[] getClassPathURL() { String[] cp = System.getProperty("java.class.path").split(File.pathSeparator); URL[] list = new URL[cp.length]; @@ -139,34 +148,28 @@ private static int getCorrectOSArch() { return System.getProperty("os.arch").contains("64") ? 64 : 32; } - public static String getEnvPropertyCaseSensitive(String name) { return System.getenv().get(name); } - public static boolean isJVMMatchesSystemArch() { return JVM_BITS == OS_BITS; } - public static String jvmProperty(String name, String value) { return String.format("-D%s=%s", name, value); } - public static String systemToJvmProperty(String name) { return String.format("-D%s=%s", name, System.getProperties().getProperty(name)); } - public static void addSystemPropertyToArgs(Collection args, String name) { String property = System.getProperty(name); if (property != null) args.add(String.format("-D%s=%s", name, property)); } - public static void verifySystemProperties(Class mainClass, boolean requireSystem) { Locale.setDefault(Locale.US); // Verify class loader @@ -178,6 +181,16 @@ public static void verifySystemProperties(Class mainClass, boolean requireSys LogHelper.debug("Verifying JVM architecture"); } + public enum ARCH { + X86("x86"), X86_64("x86-64"), ARM64("arm64"), ARM32("arm32"); + + public final String name; + + ARCH(String name) { + this.name = name; + } + } + public enum OS { MUSTDIE("mustdie"), LINUX("linux"), MACOSX("macosx");