From 070483202d8dad26fe1187836478721edbae456b Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Fri, 25 Jul 2025 15:33:11 +0200 Subject: [PATCH] Set Guice class loading to CHILD - avoid using terminally deprecated methods Default Guice class loading uses a terminally deprecated JDK memory-access classes. Fix #10312 --- .../src/main/java/org/apache/maven/cli/MavenCli.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java index 18451bc43fe4..c7808b24551c 100644 --- a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java +++ b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java @@ -271,6 +271,7 @@ public int doMain(CliRequest cliRequest) { initialize(cliRequest); cli(cliRequest); properties(cliRequest); + setupGuiceClassLoading(); logging(cliRequest); informativeCommands(cliRequest); version(cliRequest); @@ -475,6 +476,16 @@ private CommandLine cliMerge(CommandLine mavenConfig, CommandLine mavenCli) { return commandLineBuilder.build(); } + /** + * Sets up Guice class loading mode to CHILD, if not already set. + * Default Guice class loading mode uses a terminally deprecated JDK memory-access classes. + */ + void setupGuiceClassLoading() { + if (System.getProperty("guice_custom_class_loading", "").trim().isEmpty()) { + System.setProperty("guice_custom_class_loading", "CHILD"); + } + } + /** * configure logging */