From fdc9029841db30994bd452f54a365f6cd8224412 Mon Sep 17 00:00:00 2001 From: Gayal Dassanayake Date: Thu, 15 Feb 2024 09:53:44 +0530 Subject: [PATCH] Exclude cli and picocli --- .../io/ballerina/cli/launcher/CustomToolClassLoader.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/CustomToolClassLoader.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/CustomToolClassLoader.java index 6869c8361663..6849a8c462ce 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/CustomToolClassLoader.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/launcher/CustomToolClassLoader.java @@ -46,8 +46,13 @@ protected Class loadClass(String name, boolean resolve) throws ClassNotFoundE Class loadedClass = findLoadedClass(name); if (loadedClass == null) { try { - // First, try to load the class from the URLs - loadedClass = findClass(name); + // Load from parent if cli or picocli classes. This is to avoid SPI and class loading issues + if (name.startsWith("io.ballerina.cli") || name.startsWith("picocli")) { + loadedClass = super.loadClass(name, resolve); + } else { + // First, try to load the class from the URLs + loadedClass = findClass(name); + } } catch (ClassNotFoundException e) { try { // If not found, delegate to the parent