From e93974b021d3fbae6348578fc0ea60d24c5d1d05 Mon Sep 17 00:00:00 2001 From: lyf78062919 <78062919@qq.com> Date: Wed, 9 Jan 2019 10:40:18 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=B1=E4=BA=8E=E9=83=A8=E5=88=86IDE?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E7=94=9F=E6=88=90class=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=BE=83=E6=85=A2=EF=BC=8C=E5=AF=BC=E8=87=B4=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E5=87=BA=E7=8E=B0=E6=89=BE=E4=B8=8D=E5=88=B0=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=EF=BC=8C=E7=AE=80=E5=8D=95=E7=9A=84=E9=87=8D=E8=AF=95=E6=9C=BA?= =?UTF-8?q?=E5=88=B6=E5=8F=AF=E4=BB=A5=E8=A7=A3=E5=86=B3=E6=AD=A4=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../undertow/hotswap/HotSwapClassLoader.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/jfinal/server/undertow/hotswap/HotSwapClassLoader.java b/src/main/java/com/jfinal/server/undertow/hotswap/HotSwapClassLoader.java index 2cda73b..3791a10 100644 --- a/src/main/java/com/jfinal/server/undertow/hotswap/HotSwapClassLoader.java +++ b/src/main/java/com/jfinal/server/undertow/hotswap/HotSwapClassLoader.java @@ -90,7 +90,7 @@ public class HotSwapClassLoader extends URLClassLoader { * 使用 "本 ClassLoader" 加载类文件 * 注意:super.loadClass(...) 会触发 parent 加载,绝对不能使用 */ - c = super.findClass(name); + c = findClass(name); if (c != null) { if (resolve) { resolveClass(c); @@ -106,6 +106,30 @@ public class HotSwapClassLoader extends URLClassLoader { return parent.loadClass(name); } } + + /** + * 由于部分IDE自动生成class文件较慢,导致加载出现找不到异常,简单的重试机制可以解决此问题 + * @param name + * @return + */ + protected Class findClass(String name) { + int attempts = 10; + while (attempts > 0) { + try { + return super.findClass(name); + } catch (ClassNotFoundException e) { + try { + Thread.sleep(100); + } catch (InterruptedException e1){ + ; + }finally { + attempts--; + } + } + } + return null; + } + } -- Gitee