From 3182b86e76267f8baa9d8c0aa05f9eab5f457922 Mon Sep 17 00:00:00 2001 From: Josiah Noel <32279667+SentryMan@users.noreply.github.com> Date: Sat, 22 Nov 2025 18:13:12 -0500 Subject: [PATCH 1/4] Catch NCDF instead of using `Class.forName` --- avaje-config/src/main/java/io/avaje/config/Parsers.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/avaje-config/src/main/java/io/avaje/config/Parsers.java b/avaje-config/src/main/java/io/avaje/config/Parsers.java index d86f7a02..f87ce6d1 100644 --- a/avaje-config/src/main/java/io/avaje/config/Parsers.java +++ b/avaje-config/src/main/java/io/avaje/config/Parsers.java @@ -25,9 +25,8 @@ final class Parsers { private void initYamlParser() { YamlLoader yamlLoader; try { - Class.forName("org.yaml.snakeyaml.Yaml"); yamlLoader = new YamlLoaderSnake(); - } catch (ClassNotFoundException e) { + } catch (NoClassDefFoundError e) { yamlLoader = new YamlLoaderSimple(); } parserMap.put("yml", yamlLoader); From 0067144ef4941a74d86f14a95e5222f0d2a5f81c Mon Sep 17 00:00:00 2001 From: Josiah Noel <32279667+SentryMan@users.noreply.github.com> Date: Sat, 22 Nov 2025 18:45:42 -0500 Subject: [PATCH 2/4] add module check --- avaje-config/src/main/java/io/avaje/config/Parsers.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/avaje-config/src/main/java/io/avaje/config/Parsers.java b/avaje-config/src/main/java/io/avaje/config/Parsers.java index f87ce6d1..1084b0d4 100644 --- a/avaje-config/src/main/java/io/avaje/config/Parsers.java +++ b/avaje-config/src/main/java/io/avaje/config/Parsers.java @@ -24,6 +24,12 @@ final class Parsers { private void initYamlParser() { YamlLoader yamlLoader; + if (ModuleLayer.boot().findModule("org.yaml.snakeyaml").isPresent()) { + yamlLoader = new YamlLoaderSnake(); + parserMap.put("yml", yamlLoader); + parserMap.put("yaml", yamlLoader); + return; + } try { yamlLoader = new YamlLoaderSnake(); } catch (NoClassDefFoundError e) { From fb37fc5e1e94c2322fee9f87c77bb18e51fe2ea3 Mon Sep 17 00:00:00 2001 From: Josiah Noel <32279667+SentryMan@users.noreply.github.com> Date: Sat, 22 Nov 2025 21:05:08 -0500 Subject: [PATCH 3/4] optimize --- .../main/java/io/avaje/config/Parsers.java | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/avaje-config/src/main/java/io/avaje/config/Parsers.java b/avaje-config/src/main/java/io/avaje/config/Parsers.java index 1084b0d4..c0b7558c 100644 --- a/avaje-config/src/main/java/io/avaje/config/Parsers.java +++ b/avaje-config/src/main/java/io/avaje/config/Parsers.java @@ -23,18 +23,21 @@ final class Parsers { } private void initYamlParser() { - YamlLoader yamlLoader; - if (ModuleLayer.boot().findModule("org.yaml.snakeyaml").isPresent()) { - yamlLoader = new YamlLoaderSnake(); - parserMap.put("yml", yamlLoader); - parserMap.put("yaml", yamlLoader); - return; - } - try { - yamlLoader = new YamlLoaderSnake(); - } catch (NoClassDefFoundError e) { - yamlLoader = new YamlLoaderSimple(); - } + var modules = ModuleLayer.boot(); + YamlLoader yamlLoader = + modules + .findModule("io.avaje.config") + .map(m -> modules.findModule("org.yaml.snakeyaml").isPresent()) + .map(m -> (YamlLoader) new YamlLoaderSnake()) + .orElseGet( + () -> { + try { + return new YamlLoaderSnake(); + } catch (NoClassDefFoundError e) { + return new YamlLoaderSimple(); + } + }); + parserMap.put("yml", yamlLoader); parserMap.put("yaml", yamlLoader); } From afea20bb798892a98eed59c1459a9c33b5540ed4 Mon Sep 17 00:00:00 2001 From: Josiah Noel <32279667+SentryMan@users.noreply.github.com> Date: Wed, 3 Dec 2025 00:06:05 -0500 Subject: [PATCH 4/4] Catch Throwable instead of NoClassDefFoundError --- avaje-config/src/main/java/io/avaje/config/Parsers.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/avaje-config/src/main/java/io/avaje/config/Parsers.java b/avaje-config/src/main/java/io/avaje/config/Parsers.java index c0b7558c..b19cb09b 100644 --- a/avaje-config/src/main/java/io/avaje/config/Parsers.java +++ b/avaje-config/src/main/java/io/avaje/config/Parsers.java @@ -33,7 +33,7 @@ private void initYamlParser() { () -> { try { return new YamlLoaderSnake(); - } catch (NoClassDefFoundError e) { + } catch (Throwable e) { return new YamlLoaderSimple(); } });