From d3db28b8486e858a7830030cb4b38137b8702154 Mon Sep 17 00:00:00 2001 From: fxcsl Date: Fri, 31 Jul 2020 14:08:10 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E6=BA=90=E7=A0=81?= =?UTF-8?q?=EF=BC=8Cspring=20boot=202.3.x=20=E4=B8=8D=E5=86=8D=E8=B0=83?= =?UTF-8?q?=E7=94=A8createClassLoader(List=20archives)=EF=BC=8C?= =?UTF-8?q?=E6=95=85=E4=BF=AE=E6=94=B9launch=E6=96=B9=E6=B3=95=E6=9B=B4?= =?UTF-8?q?=E5=90=88=E9=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/io/xjar/boot/XExtLauncher.java | 29 +++++++++++++++++--- src/main/java/io/xjar/boot/XJarLauncher.java | 17 ++++++++++-- src/main/java/io/xjar/boot/XWarLauncher.java | 16 +++++++++-- 3 files changed, 54 insertions(+), 8 deletions(-) diff --git a/src/main/java/io/xjar/boot/XExtLauncher.java b/src/main/java/io/xjar/boot/XExtLauncher.java index 2ba107e..476fc65 100644 --- a/src/main/java/io/xjar/boot/XExtLauncher.java +++ b/src/main/java/io/xjar/boot/XExtLauncher.java @@ -29,10 +29,31 @@ public void launch() throws Exception { launch(xLauncher.args); } + /** + * 查看源码,spring boot 2.3.x 不再调用createClassLoader(List archives),故修改launch方法更合适 + * + * @param args + * @param launchClass + * @param classLoader + * @throws Exception + */ + @Override - protected ClassLoader createClassLoader(List archives) throws Exception { - URLClassLoader classLoader = (URLClassLoader) super.createClassLoader(archives); - URL[] urls = classLoader.getURLs(); - return new XBootClassLoader(urls, this.getClass().getClassLoader(), xLauncher.xDecryptor, xLauncher.xEncryptor, xLauncher.xKey); + protected void launch(String[] args, String launchClass, ClassLoader classLoader) throws Exception { + URLClassLoader urlClassLoader = (URLClassLoader) classLoader; + URL[] urls = urlClassLoader.getURLs(); + ClassLoader cl = new XBootClassLoader(urls, this.getClass().getClassLoader(), xLauncher.xDecryptor, xLauncher.xEncryptor, xLauncher.xKey); + Thread.currentThread().setContextClassLoader(cl); + createMainMethodRunner(launchClass, args, classLoader).run(); } + + /** + * don't use it + + @Override protected ClassLoader createClassLoader(List archives) throws Exception { + URLClassLoader classLoader = (URLClassLoader) super.createClassLoader(archives); + URL[] urls = classLoader.getURLs(); + return new XBootClassLoader(urls, this.getClass().getClassLoader(), xLauncher.xDecryptor, xLauncher.xEncryptor, xLauncher.xKey); + } + **/ } diff --git a/src/main/java/io/xjar/boot/XJarLauncher.java b/src/main/java/io/xjar/boot/XJarLauncher.java index 8ebe2fc..fe4df3a 100644 --- a/src/main/java/io/xjar/boot/XJarLauncher.java +++ b/src/main/java/io/xjar/boot/XJarLauncher.java @@ -4,6 +4,7 @@ import org.springframework.boot.loader.JarLauncher; import java.net.URL; +import java.net.URLClassLoader; /** * Spring-Boot Jar 启动器 @@ -27,8 +28,20 @@ public void launch() throws Exception { } @Override - protected ClassLoader createClassLoader(URL[] urls) throws Exception { - return new XBootClassLoader(urls, this.getClass().getClassLoader(), xLauncher.xDecryptor, xLauncher.xEncryptor, xLauncher.xKey); + protected void launch(String[] args, String launchClass, ClassLoader classLoader) throws Exception { + URLClassLoader urlClassLoader = (URLClassLoader) classLoader; + URL[] urls = urlClassLoader.getURLs(); + ClassLoader cl = new XBootClassLoader(urls, this.getClass().getClassLoader(), xLauncher.xDecryptor, xLauncher.xEncryptor, xLauncher.xKey); + Thread.currentThread().setContextClassLoader(cl); + createMainMethodRunner(launchClass, args, classLoader).run(); } + /** + * don't use it + + @Override protected ClassLoader createClassLoader(URL[] urls) throws Exception { + return new XBootClassLoader(urls, this.getClass().getClassLoader(), xLauncher.xDecryptor, xLauncher.xEncryptor, xLauncher.xKey); + } + */ + } diff --git a/src/main/java/io/xjar/boot/XWarLauncher.java b/src/main/java/io/xjar/boot/XWarLauncher.java index fbb76a0..1a4dd56 100644 --- a/src/main/java/io/xjar/boot/XWarLauncher.java +++ b/src/main/java/io/xjar/boot/XWarLauncher.java @@ -4,6 +4,7 @@ import org.springframework.boot.loader.WarLauncher; import java.net.URL; +import java.net.URLClassLoader; /** * Spring-Boot Jar 启动器 @@ -27,8 +28,19 @@ public void launch() throws Exception { } @Override - protected ClassLoader createClassLoader(URL[] urls) throws Exception { - return new XBootClassLoader(urls, this.getClass().getClassLoader(), xLauncher.xDecryptor, xLauncher.xEncryptor, xLauncher.xKey); + protected void launch(String[] args, String launchClass, ClassLoader classLoader) throws Exception { + URLClassLoader urlClassLoader = (URLClassLoader) classLoader; + URL[] urls = urlClassLoader.getURLs(); + ClassLoader cl = new XBootClassLoader(urls, this.getClass().getClassLoader(), xLauncher.xDecryptor, xLauncher.xEncryptor, xLauncher.xKey); + Thread.currentThread().setContextClassLoader(cl); + createMainMethodRunner(launchClass, args, classLoader).run(); } + /** + * don't use it + @Override protected ClassLoader createClassLoader(URL[] urls) throws Exception { + return new XBootClassLoader(urls, this.getClass().getClassLoader(), xLauncher.xDecryptor, xLauncher.xEncryptor, xLauncher.xKey); + } + */ + } From dd0f77e463d36e4225a0dc94ff916a7f49ad0144 Mon Sep 17 00:00:00 2001 From: fxcsl Date: Wed, 19 Aug 2020 14:07:11 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E6=BA=90=E7=A0=81?= =?UTF-8?q?=EF=BC=8Cspring=20boot=202.3.x=20=E4=B8=8D=E5=86=8D=E8=B0=83?= =?UTF-8?q?=E7=94=A8createClassLoader(List=20archives)=EF=BC=8C?= =?UTF-8?q?=E6=95=85=E4=BF=AE=E6=94=B9launch=E6=96=B9=E6=B3=95=E6=9B=B4?= =?UTF-8?q?=E5=90=88=E9=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/io/xjar/boot/XExtLauncher.java | 11 ----------- src/main/java/io/xjar/boot/XJarLauncher.java | 16 ++++++++-------- src/main/java/io/xjar/boot/XWarLauncher.java | 16 ++++++++-------- 3 files changed, 16 insertions(+), 27 deletions(-) diff --git a/src/main/java/io/xjar/boot/XExtLauncher.java b/src/main/java/io/xjar/boot/XExtLauncher.java index 476fc65..a92ea1f 100644 --- a/src/main/java/io/xjar/boot/XExtLauncher.java +++ b/src/main/java/io/xjar/boot/XExtLauncher.java @@ -31,13 +31,11 @@ public void launch() throws Exception { /** * 查看源码,spring boot 2.3.x 不再调用createClassLoader(List archives),故修改launch方法更合适 - * * @param args * @param launchClass * @param classLoader * @throws Exception */ - @Override protected void launch(String[] args, String launchClass, ClassLoader classLoader) throws Exception { URLClassLoader urlClassLoader = (URLClassLoader) classLoader; @@ -47,13 +45,4 @@ protected void launch(String[] args, String launchClass, ClassLoader classLoader createMainMethodRunner(launchClass, args, classLoader).run(); } - /** - * don't use it - - @Override protected ClassLoader createClassLoader(List archives) throws Exception { - URLClassLoader classLoader = (URLClassLoader) super.createClassLoader(archives); - URL[] urls = classLoader.getURLs(); - return new XBootClassLoader(urls, this.getClass().getClassLoader(), xLauncher.xDecryptor, xLauncher.xEncryptor, xLauncher.xKey); - } - **/ } diff --git a/src/main/java/io/xjar/boot/XJarLauncher.java b/src/main/java/io/xjar/boot/XJarLauncher.java index fe4df3a..5137b07 100644 --- a/src/main/java/io/xjar/boot/XJarLauncher.java +++ b/src/main/java/io/xjar/boot/XJarLauncher.java @@ -27,6 +27,14 @@ public void launch() throws Exception { launch(xLauncher.args); } + /** + * 查看源码,spring boot 2.3.x 不再调用createClassLoader(List archives),故修改launch方法更合适 + * + * @param args + * @param launchClass + * @param classLoader + * @throws Exception + */ @Override protected void launch(String[] args, String launchClass, ClassLoader classLoader) throws Exception { URLClassLoader urlClassLoader = (URLClassLoader) classLoader; @@ -36,12 +44,4 @@ protected void launch(String[] args, String launchClass, ClassLoader classLoader createMainMethodRunner(launchClass, args, classLoader).run(); } - /** - * don't use it - - @Override protected ClassLoader createClassLoader(URL[] urls) throws Exception { - return new XBootClassLoader(urls, this.getClass().getClassLoader(), xLauncher.xDecryptor, xLauncher.xEncryptor, xLauncher.xKey); - } - */ - } diff --git a/src/main/java/io/xjar/boot/XWarLauncher.java b/src/main/java/io/xjar/boot/XWarLauncher.java index 1a4dd56..3d5d11e 100644 --- a/src/main/java/io/xjar/boot/XWarLauncher.java +++ b/src/main/java/io/xjar/boot/XWarLauncher.java @@ -27,6 +27,14 @@ public void launch() throws Exception { launch(xLauncher.args); } + /** + * 查看源码,spring boot 2.3.x 不再调用createClassLoader(List archives),故修改launch方法更合适 + * + * @param args + * @param launchClass + * @param classLoader + * @throws Exception + */ @Override protected void launch(String[] args, String launchClass, ClassLoader classLoader) throws Exception { URLClassLoader urlClassLoader = (URLClassLoader) classLoader; @@ -35,12 +43,4 @@ protected void launch(String[] args, String launchClass, ClassLoader classLoader Thread.currentThread().setContextClassLoader(cl); createMainMethodRunner(launchClass, args, classLoader).run(); } - - /** - * don't use it - @Override protected ClassLoader createClassLoader(URL[] urls) throws Exception { - return new XBootClassLoader(urls, this.getClass().getClassLoader(), xLauncher.xDecryptor, xLauncher.xEncryptor, xLauncher.xKey); - } - */ - }