From 11cc7a49f827cdca5fc520ea688f0703205d7b51 Mon Sep 17 00:00:00 2001 From: thinking Date: Mon, 25 Oct 2021 22:47:52 +0800 Subject: [PATCH 1/2] =?UTF-8?q?Xjar=E6=94=AF=E6=8C=81JDK9+=E9=80=9A?= =?UTF-8?q?=E8=BF=87ClassPath=E5=90=AF=E5=8A=A8=E7=9A=84jar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/io/xjar/jar/XJarLauncher.java | 29 ++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/xjar/jar/XJarLauncher.java b/src/main/java/io/xjar/jar/XJarLauncher.java index 8ae560c..456fbd8 100644 --- a/src/main/java/io/xjar/jar/XJarLauncher.java +++ b/src/main/java/io/xjar/jar/XJarLauncher.java @@ -10,6 +10,8 @@ import java.net.URLClassLoader; import java.security.CodeSource; import java.security.ProtectionDomain; +import java.util.ArrayList; +import java.util.List; import java.util.jar.Attributes; import java.util.jar.JarFile; import java.util.jar.Manifest; @@ -46,9 +48,15 @@ public void launch() throws Exception { if (path == null) { throw new IllegalStateException("Unable to determine code source archive"); } - File jar = new File(path); - URL url = jar.toURI().toURL(); - xJarClassLoader = new XJarClassLoader(new URL[]{url}, classLoader.getParent(), xLauncher.xDecryptor, xLauncher.xEncryptor, xLauncher.xKey); + List jarPathList= addJarUrl(); + URL[] urlArray = new URL[jarPathList.size()]; + for(int i=0;i addJarUrl() { + List jarPathList = new ArrayList<>(); + String classPath = System.getProperty("java.class.path"); + String[] jarPathArryay= classPath.split(File.pathSeparator); + if(jarPathArryay.length == 0) { + return jarPathList; + } + for(String jarPath : jarPathArryay) { + if(null == jarPath || jarPath.trim().isEmpty()) { + continue; + } + jarPathList.add(jarPath.trim()); + } + return jarPathList; + } } From 742aea81a90e846d949164083798f6e3aa12004e Mon Sep 17 00:00:00 2001 From: thinking Date: Tue, 9 Nov 2021 21:45:26 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=9D=9EclassPath?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E7=9A=84jar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/io/xjar/jar/XJarLauncher.java | 38 +++++++++++++-------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/src/main/java/io/xjar/jar/XJarLauncher.java b/src/main/java/io/xjar/jar/XJarLauncher.java index 456fbd8..9ae23fa 100644 --- a/src/main/java/io/xjar/jar/XJarLauncher.java +++ b/src/main/java/io/xjar/jar/XJarLauncher.java @@ -48,15 +48,22 @@ public void launch() throws Exception { if (path == null) { throw new IllegalStateException("Unable to determine code source archive"); } - List jarPathList= addJarUrl(); - URL[] urlArray = new URL[jarPathList.size()]; - for(int i=0;i jarPathList = analyzeClassPath(classPath); + URL[] urlArray = new URL[jarPathList.size()]; + for (int i = 0; i < jarPathList.size(); i++) { + String single = jarPathList.get(i); + File classPathJar = new File(single); + URL classPathUrl = classPathJar.toURI().toURL(); + urlArray[i] = classPathUrl; + } + xJarClassLoader = new XJarClassLoader(urlArray, classLoader.getParent(), xLauncher.xDecryptor, xLauncher.xEncryptor, xLauncher.xKey); } - xJarClassLoader = new XJarClassLoader(urlArray, classLoader.getParent(), xLauncher.xDecryptor, xLauncher.xEncryptor, xLauncher.xKey); } Thread.currentThread().setContextClassLoader(xJarClassLoader); @@ -74,19 +81,22 @@ public void launch() throws Exception { mainMethod.invoke(null, new Object[]{xLauncher.args}); } - private List addJarUrl() { + private List analyzeClassPath(String classPath) { List jarPathList = new ArrayList<>(); - String classPath = System.getProperty("java.class.path"); - String[] jarPathArryay= classPath.split(File.pathSeparator); - if(jarPathArryay.length == 0) { + String[] jarPathArryay = classPath.split(File.pathSeparator); + if (jarPathArryay.length == 0) { return jarPathList; } - for(String jarPath : jarPathArryay) { - if(null == jarPath || jarPath.trim().isEmpty()) { + for (String jarPath : jarPathArryay) { + if (null == jarPath || jarPath.trim().isEmpty()) { continue; } jarPathList.add(jarPath.trim()); } return jarPathList; } + + private String getJavaClassPath() { + return System.getProperty("java.class.path"); + } }