From d345383fda11586e430c888f2e3e12e5f4eb422e Mon Sep 17 00:00:00 2001 From: kuroppoi <68156848+kuroppoi@users.noreply.github.com> Date: Sun, 25 Jun 2023 22:26:07 +0200 Subject: [PATCH] Copy libraries to working directory instead of obscure temp location --- src/main/java/entralinked/LauncherAgent.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) 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) {