diff --git a/src/main/java/entralinked/LauncherAgent.java b/src/main/java/entralinked/LauncherAgent.java index bfbab49..4b54a21 100644 --- a/src/main/java/entralinked/LauncherAgent.java +++ b/src/main/java/entralinked/LauncherAgent.java @@ -3,8 +3,6 @@ package entralinked; import java.io.File; import java.lang.instrument.Instrumentation; import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.StandardCopyOption; import java.util.jar.JarFile; import org.apache.logging.log4j.LogManager; @@ -27,12 +25,19 @@ public class LauncherAgent { "bcpkix-jdk15on-1.70.jar" }; + // Try create library directory + File libraryDirectory = new File("libs"); + libraryDirectory.mkdirs(); + + // Extract jars if necessary for(int i = 0; i < jarNames.length; i++) { String jarName = jarNames[i]; - Path jarPath = Files.createTempFile(jarNames[i], null); - File jarFile = jarPath.toFile(); - jarFile.deleteOnExit(); // Doesn't actually do anything on terminal exit because Java. - Files.copy(LauncherAgent.class.getResourceAsStream("/%s".formatted(jarName)), jarPath, StandardCopyOption.REPLACE_EXISTING); + File jarFile = new File(libraryDirectory, jarName); + + if(!jarFile.exists()) { + Files.copy(LauncherAgent.class.getResourceAsStream("/%s".formatted(jarName)), jarFile.toPath()); + } + instrumentation.appendToSystemClassLoaderSearch(new JarFile(jarFile)); } } catch(Exception e) {