From 686d6732128310bbe6b5942aef2b335e2400c218 Mon Sep 17 00:00:00 2001 From: "sigonasr2, Sig, Sigo" Date: Tue, 12 Jul 2022 20:09:57 +0000 Subject: [PATCH] Compile and load plugins dynamically Co-authored-by: sigonasr2 --- bin/TestPlugin.jar | Bin 764 -> 764 bytes bin/sig/PluginLoader.class | Bin 0 -> 4527 bytes bin/sig/SigsUniverse.class | Bin 0 -> 326 bytes plugins/TestPlugin.java | 2 +- src/sig/PluginLoader.java | 36 +----------------------------------- 5 files changed, 2 insertions(+), 36 deletions(-) create mode 100644 bin/sig/PluginLoader.class create mode 100644 bin/sig/SigsUniverse.class diff --git a/bin/TestPlugin.jar b/bin/TestPlugin.jar index d521e0a65e30df891cd65b633809cb2b8d7686a7..1710e966784b1bf305e4985465d936e3432badb5 100644 GIT binary patch delta 52 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 A^#A|> literal 0 HcmV?d00001 diff --git a/bin/sig/SigsUniverse.class b/bin/sig/SigsUniverse.class new file mode 100644 index 0000000000000000000000000000000000000000..c7926837dea0bc565ce3e45a0880dc5917edd24d GIT binary patch literal 326 zcmYk2u};G<5QcvzX+zThEg&`|*jfg%uz^^RIz@mK=)&Z*mUUI?NKVrCVgfPn06Y}p zjt<3=?|$EXclP=F=kp7|HBJ%)2xCMkdgv>RR(hkeN;{i9mMgPp75ca2sJ&ANC)0U? zJq%(bDTaS|LpFP=I!i9E_0o8Sp@?m$iLuWug(=83FOD|GH%1}4ub1o&b8_aPTbIT^ z>#~x>T9Z>aoxJ9|hZLKTVmGHPg%JawypkyMp2YfnXuh{o4 n-=W@E@a1eJ4TKnAgfVMD&v{EU`arxR<(s&iS*bZ<9pLyE!81MZ literal 0 HcmV?d00001 diff --git a/plugins/TestPlugin.java b/plugins/TestPlugin.java index 8849f5a..009e8ee 100644 --- a/plugins/TestPlugin.java +++ b/plugins/TestPlugin.java @@ -1,5 +1,5 @@ public class TestPlugin { public TestPlugin() { - System.out.println("Loaded me!"); + System.out.println("Loaded me! Yay!"); } } diff --git a/src/sig/PluginLoader.java b/src/sig/PluginLoader.java index b51472e..0c8cc02 100644 --- a/src/sig/PluginLoader.java +++ b/src/sig/PluginLoader.java @@ -1,7 +1,6 @@ package sig; import java.io.BufferedReader; -import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.lang.reflect.InvocationTargetException; @@ -10,10 +9,6 @@ import java.net.URLClassLoader; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.List; -import java.util.jar.JarEntry; -import java.util.jar.JarInputStream; public class PluginLoader { public static void LoadPlugins() { @@ -27,40 +22,11 @@ public class PluginLoader { } } - public static List getClasseNames(String jarName) { - boolean debug=true; - ArrayList classes = new ArrayList(); - - if (debug) - System.out.println("Jar " + jarName ); - try { - JarInputStream jarFile = new JarInputStream(new FileInputStream( - jarName)); - JarEntry jarEntry; - - while (true) { - jarEntry = jarFile.getNextJarEntry(); - if (jarEntry == null) { - break; - } - if (jarEntry.getName().endsWith(".class")) { - if (debug) - System.out.println("Found " - + jarEntry.getName().replaceAll("/", "\\.")); - classes.add(jarEntry.getName().replaceAll("/", "\\.")); - } - } - } catch (Exception e) { - e.printStackTrace(); - } - return classes; - } - private static String LoadPlugin(Path f) { try { System.out.println("Loading "+f); System.out.println(" Compiling "+f.getParent().toAbsolutePath()+"..."); - Process process = Runtime.getRuntime().exec(new String[]{"javac","../plugins/TestPlugin.java"}); + Process process = Runtime.getRuntime().exec(new String[]{"javac","-Xlint:unchecked","-cp","../plugins","-d",".","../plugins/TestPlugin.java"}); //Process process = Runtime.getRuntime().exec("jar cfm TestPlugin.jar ../manifest ."); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); StringBuilder line=new StringBuilder();