From 6e635d427261122bce2e9553fece2644d64fa0fe Mon Sep 17 00:00:00 2001 From: Redkale Date: Sat, 26 Nov 2022 14:47:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DLoggingConsoleHandler.denyreg?= =?UTF-8?q?=E7=9B=B8=E5=85=B3bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/redkale/boot/Application.java | 13 ++++++++++++- src/main/java/org/redkale/boot/ClassFilter.java | 6 +++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/redkale/boot/Application.java b/src/main/java/org/redkale/boot/Application.java index 45593a684..d993222a0 100644 --- a/src/main/java/org/redkale/boot/Application.java +++ b/src/main/java/org/redkale/boot/Application.java @@ -394,7 +394,18 @@ public final class Application { if (properties.getProperty("java.util.logging.ConsoleHandler.denyreg") != null && !compileMode) { final String handlers = properties.getProperty("handlers"); if (handlers != null && handlers.contains("java.util.logging.ConsoleHandler")) { - properties.setProperty("handlers", handlers.replace("java.util.logging.ConsoleHandler", LoggingFileHandler.LoggingConsoleHandler.class.getName())); + final String consoleHandlerClass = LoggingFileHandler.LoggingConsoleHandler.class.getName(); + properties.setProperty("handlers", handlers.replace("java.util.logging.ConsoleHandler", consoleHandlerClass)); + Properties prop = new Properties(); + String prefix = consoleHandlerClass + "."; + properties.entrySet().forEach(x -> { + if (x.getKey().toString().startsWith("java.util.logging.ConsoleHandler.")) { + prop.put(x.getKey().toString().replace("java.util.logging.ConsoleHandler.", prefix), x.getValue()); + } + }); + prop.entrySet().forEach(x -> { + properties.put(x.getKey(), x.getValue()); + }); } } String fileHandlerPattern = properties.getProperty("java.util.logging.FileHandler.pattern"); diff --git a/src/main/java/org/redkale/boot/ClassFilter.java b/src/main/java/org/redkale/boot/ClassFilter.java index 68f788372..0f3eaa52e 100644 --- a/src/main/java/org/redkale/boot/ClassFilter.java +++ b/src/main/java/org/redkale/boot/ClassFilter.java @@ -212,6 +212,10 @@ public final class ClassFilter { && !clazzname.startsWith("com.sun.") && !clazzname.startsWith("jdk.") && !clazzname.startsWith("META-INF") && !clazzname.startsWith("com.mysql.") && !clazzname.startsWith("com.microsoft.") && !clazzname.startsWith("freemarker.") && !clazzname.startsWith("org.redkale") && (clazzname.contains("Service") || clazzname.contains("Servlet"))) { + if (cfe instanceof NoClassDefFoundError) { + String msg = ((NoClassDefFoundError) cfe).getMessage(); + if (msg.startsWith("java.lang.NoClassDefFoundError: java") || msg.startsWith("javax/")) return; + } //&& (!(cfe instanceof NoClassDefFoundError) || (cfe instanceof UnsupportedClassVersionError) || ((NoClassDefFoundError) cfe).getMessage().startsWith("java.lang.NoClassDefFoundError: java"))) { logger.log(Level.FINEST, ClassFilter.class.getSimpleName() + " filter error for class: " + clazzname + (url == null ? "" : (" in " + url)), cfe); } @@ -530,7 +534,7 @@ public final class ClassFilter { Set classes = cache.get(url); if (classes == null) { classes = new LinkedHashSet<>(); - try (JarFile jar = new JarFile(URLDecoder.decode(url.getFile(), StandardCharsets.UTF_8))) { + try ( JarFile jar = new JarFile(URLDecoder.decode(url.getFile(), StandardCharsets.UTF_8))) { Enumeration it = jar.entries(); while (it.hasMoreElements()) { String entryname = it.nextElement().getName().replace('/', '.');