You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by eo...@apache.org on 2022/04/22 16:32:15 UTC

[bookkeeper] branch master updated: [build] make build passes on JDK17 (#3053)

This is an automated email from the ASF dual-hosted git repository.

eolivelli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git


The following commit(s) were added to refs/heads/master by this push:
     new f8612883c7 [build] make build passes on JDK17 (#3053)
f8612883c7 is described below

commit f8612883c7ed358e10ee2579b700ab46f48e95ba
Author: Nicolò Boschi <bo...@gmail.com>
AuthorDate: Fri Apr 22 18:32:11 2022 +0200

    [build] make build passes on JDK17 (#3053)
---
 .../apache/bookkeeper/bookie/BookieException.java  |  4 ++
 .../org/apache/bookkeeper/proto/BookieServer.java  |  5 +-
 .../bookkeeper/verifier/BookkeeperVerifier.java    |  4 +-
 .../bookie/BookieInitializationTest.java           |  9 ++-
 bookkeeper-stats/build.gradle                      |  1 +
 bookkeeper-stats/pom.xml                           |  9 +++
 .../bookkeeper/stats/CachingStatsLogger.java       |  3 +
 .../apache/bookkeeper/stats/NullStatsLogger.java   |  3 +
 .../apache/bookkeeper/stats/NullStatsProvider.java |  2 +
 .../java/org/apache/bookkeeper/stats/Stats.java    |  2 +
 build.gradle                                       |  1 -
 .../main/resources/bookkeeper/findbugsExclude.xml  | 10 +++
 .../resources/distributedlog/findbugsExclude.xml   | 10 +++
 gradle.properties                                  |  4 +-
 microbenchmarks/build.gradle                       |  1 +
 .../bookkeeper/stats/codahale/TimerBenchmark.java  |  3 +-
 pom.xml                                            |  4 +-
 stream/distributedlog/core/build.gradle            |  1 +
 .../impl/metadata/ZKLogStreamMetadataStore.java    |  3 +-
 stream/distributedlog/pom.xml                      | 19 ++++++
 .../tests/integration/utils/MavenClassLoader.java  | 75 +++++++++-------------
 21 files changed, 112 insertions(+), 61 deletions(-)

diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieException.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieException.java
index 2f86052f00..2b85961cf4 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieException.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieException.java
@@ -167,6 +167,10 @@ public abstract class BookieException extends Exception {
         public BookieUnauthorizedAccessException() {
             super(Code.UnauthorizedAccessException);
         }
+
+        public BookieUnauthorizedAccessException(String reason) {
+            super(Code.UnauthorizedAccessException, reason);
+        }
     }
 
     /**
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieServer.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieServer.java
index 2c1eb3a7d4..1054c17245 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieServer.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieServer.java
@@ -27,7 +27,6 @@ import io.netty.buffer.ByteBufAllocator;
 import java.io.IOException;
 import java.lang.Thread.UncaughtExceptionHandler;
 import java.net.UnknownHostException;
-import java.security.AccessControlException;
 import java.util.Arrays;
 import java.util.concurrent.TimeUnit;
 import org.apache.bookkeeper.bookie.Bookie;
@@ -201,7 +200,7 @@ public class BookieServer {
     /**
      * Ensure the current user can start-up the process if it's restricted.
      */
-    private void validateUser(ServerConfiguration conf) throws AccessControlException {
+    private void validateUser(ServerConfiguration conf) throws BookieException {
         if (conf.containsKey(PERMITTED_STARTUP_USERS)) {
             String currentUser = System.getProperty("user.name");
             String[] propertyValue = conf.getPermittedStartupUsers();
@@ -215,7 +214,7 @@ public class BookieServer {
                             + " Current user: " + currentUser + " permittedStartupUsers: "
                             + Arrays.toString(propertyValue);
             LOG.error(errorMsg);
-            throw new AccessControlException(errorMsg);
+            throw new BookieException.BookieUnauthorizedAccessException(errorMsg);
         }
     }
 
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/verifier/BookkeeperVerifier.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/verifier/BookkeeperVerifier.java
index 63c24578d9..5715bbf404 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/verifier/BookkeeperVerifier.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/verifier/BookkeeperVerifier.java
@@ -18,7 +18,7 @@
 package org.apache.bookkeeper.verifier;
 
 import static com.google.common.base.Preconditions.checkState;
-
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -32,7 +32,6 @@ import java.util.Set;
 import java.util.TreeSet;
 import java.util.function.BiConsumer;
 import java.util.function.Consumer;
-
 import org.apache.bookkeeper.client.BKException;
 
 /**
@@ -180,6 +179,7 @@ public class BookkeeperVerifier {
     /**
      * State required to regenerate an entry.
      */
+    @SuppressFBWarnings("DMI_RANDOM_USED_ONLY_ONCE")
     class EntryInfo {
         private final long entryID;
         private final long seed;
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieInitializationTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieInitializationTest.java
index d919bc8d8b..a3f20a85e2 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieInitializationTest.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieInitializationTest.java
@@ -55,7 +55,6 @@ import java.net.BindException;
 import java.net.InetAddress;
 import java.net.URL;
 import java.net.URLConnection;
-import java.security.AccessControlException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -579,7 +578,7 @@ public class BookieInitializationTest extends BookKeeperClusterTestCase {
                     new MockUncleanShutdownDetection());
 
             fail("Bookkeeper should not have started since current user isn't in permittedStartupUsers");
-        } catch (AccessControlException buae) {
+        } catch (BookieException.BookieUnauthorizedAccessException buae) {
             sawException = true;
         } finally {
             if (bs1 != null && bs1.isRunning()) {
@@ -615,7 +614,7 @@ public class BookieInitializationTest extends BookKeeperClusterTestCase {
                     NullStatsLogger.INSTANCE, UnpooledByteBufAllocator.DEFAULT,
                     new MockUncleanShutdownDetection());
             bs1.start();
-        } catch (AccessControlException buae) {
+        } catch (BookieException.BookieUnauthorizedAccessException buae) {
             fail("Bookkeeper should have started since current user is in permittedStartupUsers");
         } finally {
             if (bs1 != null && bs1.isRunning()) {
@@ -632,7 +631,7 @@ public class BookieInitializationTest extends BookKeeperClusterTestCase {
                     NullStatsLogger.INSTANCE, UnpooledByteBufAllocator.DEFAULT,
                     new MockUncleanShutdownDetection());
             bs1.start();
-        } catch (AccessControlException buae) {
+        } catch (BookieException.BookieUnauthorizedAccessException buae) {
             fail("Bookkeeper should have started since current user is in permittedStartupUsers");
         } finally {
             if (bs1 != null && bs1.isRunning()) {
@@ -664,7 +663,7 @@ public class BookieInitializationTest extends BookKeeperClusterTestCase {
                     NullStatsLogger.INSTANCE, UnpooledByteBufAllocator.DEFAULT,
                     new MockUncleanShutdownDetection());
             bs1.start();
-        } catch (AccessControlException buae) {
+        } catch (BookieException.BookieUnauthorizedAccessException buae) {
             fail("Bookkeeper should have started since permittedStartupUser is not specified");
         } finally {
             if (bs1 != null && bs1.isRunning()) {
diff --git a/bookkeeper-stats/build.gradle b/bookkeeper-stats/build.gradle
index 98784c9718..dcdd59a76a 100644
--- a/bookkeeper-stats/build.gradle
+++ b/bookkeeper-stats/build.gradle
@@ -23,6 +23,7 @@ plugins {
 dependencies {
     implementation depLibs.commonsConfiguration
     implementation depLibs.slf4j
+    compileOnly depLibs.spotbugsAnnotations
 }
 
 jar {
diff --git a/bookkeeper-stats/pom.xml b/bookkeeper-stats/pom.xml
index 76a6cf21ce..d5718f1c88 100644
--- a/bookkeeper-stats/pom.xml
+++ b/bookkeeper-stats/pom.xml
@@ -26,6 +26,9 @@
   <artifactId>bookkeeper-stats-api</artifactId>
   <name>Apache BookKeeper :: Stats API</name>
   <url>http://maven.apache.org</url>
+  <properties>
+    <spotbugs-annotations.version>4.6.0</spotbugs-annotations.version>
+  </properties>
   <build>
     <plugins>
       <plugin>
@@ -55,5 +58,11 @@
     </plugins>
   </build>
   <dependencies>
+    <dependency>
+      <groupId>com.github.spotbugs</groupId>
+      <artifactId>spotbugs-annotations</artifactId>
+      <version>${spotbugs-annotations.version}</version>
+      <scope>provided</scope>
+    </dependency>
   </dependencies>
 </project>
diff --git a/bookkeeper-stats/src/main/java/org/apache/bookkeeper/stats/CachingStatsLogger.java b/bookkeeper-stats/src/main/java/org/apache/bookkeeper/stats/CachingStatsLogger.java
index d86e19a176..15725eb157 100644
--- a/bookkeeper-stats/src/main/java/org/apache/bookkeeper/stats/CachingStatsLogger.java
+++ b/bookkeeper-stats/src/main/java/org/apache/bookkeeper/stats/CachingStatsLogger.java
@@ -16,6 +16,8 @@
  */
 package org.apache.bookkeeper.stats;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
@@ -29,6 +31,7 @@ public class CachingStatsLogger implements StatsLogger {
     protected final ConcurrentMap<String, OpStatsLogger> opStatsLoggers;
     protected final ConcurrentMap<String, StatsLogger> scopeStatsLoggers;
 
+    @SuppressFBWarnings("EI_EXPOSE_REP2")
     public CachingStatsLogger(StatsLogger statsLogger) {
         this.underlying = statsLogger;
         this.counters = new ConcurrentHashMap<String, Counter>();
diff --git a/bookkeeper-stats/src/main/java/org/apache/bookkeeper/stats/NullStatsLogger.java b/bookkeeper-stats/src/main/java/org/apache/bookkeeper/stats/NullStatsLogger.java
index 3e10b20c20..f527df0b2a 100644
--- a/bookkeeper-stats/src/main/java/org/apache/bookkeeper/stats/NullStatsLogger.java
+++ b/bookkeeper-stats/src/main/java/org/apache/bookkeeper/stats/NullStatsLogger.java
@@ -16,6 +16,8 @@
  */
 package org.apache.bookkeeper.stats;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -24,6 +26,7 @@ import java.util.concurrent.TimeUnit;
  * <p>Metrics are not recorded, making this receiver useful in unit tests and as defaults in
  * situations where metrics are not strictly required.
  */
+@SuppressFBWarnings("EI_EXPOSE_REP2")
 public class NullStatsLogger implements StatsLogger {
 
     public static final NullStatsLogger INSTANCE = new NullStatsLogger();
diff --git a/bookkeeper-stats/src/main/java/org/apache/bookkeeper/stats/NullStatsProvider.java b/bookkeeper-stats/src/main/java/org/apache/bookkeeper/stats/NullStatsProvider.java
index 21703f725f..e9c40ca1f0 100644
--- a/bookkeeper-stats/src/main/java/org/apache/bookkeeper/stats/NullStatsProvider.java
+++ b/bookkeeper-stats/src/main/java/org/apache/bookkeeper/stats/NullStatsProvider.java
@@ -16,11 +16,13 @@
  */
 package org.apache.bookkeeper.stats;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import org.apache.commons.configuration.Configuration;
 
 /**
  * A <i>no-op</i> stats provider implementation.
  */
+@SuppressFBWarnings("EI_EXPOSE_REP2")
 public class NullStatsProvider implements StatsProvider {
 
     final StatsLogger nullStatsLogger = new NullStatsLogger();
diff --git a/bookkeeper-stats/src/main/java/org/apache/bookkeeper/stats/Stats.java b/bookkeeper-stats/src/main/java/org/apache/bookkeeper/stats/Stats.java
index a3799b08e5..3f9b98d43e 100644
--- a/bookkeeper-stats/src/main/java/org/apache/bookkeeper/stats/Stats.java
+++ b/bookkeeper-stats/src/main/java/org/apache/bookkeeper/stats/Stats.java
@@ -20,6 +20,7 @@
  */
 package org.apache.bookkeeper.stats;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import org.apache.commons.configuration.Configuration;
@@ -63,6 +64,7 @@ public class Stats {
         }
     }
 
+    @SuppressFBWarnings("EI_EXPOSE_REP2")
     public static StatsProvider get() {
         return prov;
     }
diff --git a/build.gradle b/build.gradle
index e30c984281..9ef807ad97 100644
--- a/build.gradle
+++ b/build.gradle
@@ -143,7 +143,6 @@ allprojects {
         }
 
         spotbugs {
-            toolVersion = '3.1.8'
             excludeFilter = file("$rootDir/buildtools/src/main/resources/bookkeeper/findbugsExclude.xml")
             reportLevel = 'high'
             spotbugsTest.enabled = false
diff --git a/buildtools/src/main/resources/bookkeeper/findbugsExclude.xml b/buildtools/src/main/resources/bookkeeper/findbugsExclude.xml
index da6867c132..09daf19656 100644
--- a/buildtools/src/main/resources/bookkeeper/findbugsExclude.xml
+++ b/buildtools/src/main/resources/bookkeeper/findbugsExclude.xml
@@ -16,6 +16,16 @@
    limitations under the License.
 //-->
 <FindBugsFilter>
+  <!--Global rules suppressions-->
+  <Match>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Bug pattern="MS_EXPOSE_REP"/>
+  </Match>
   <!-- circe-checksum -->
   <Match>
     <!-- imported code -->
diff --git a/buildtools/src/main/resources/distributedlog/findbugsExclude.xml b/buildtools/src/main/resources/distributedlog/findbugsExclude.xml
index f85686fcb7..c4ba2cd127 100644
--- a/buildtools/src/main/resources/distributedlog/findbugsExclude.xml
+++ b/buildtools/src/main/resources/distributedlog/findbugsExclude.xml
@@ -16,6 +16,16 @@
    limitations under the License.
 //-->
 <FindBugsFilter>
+  <!--Global rules suppressions-->
+  <Match>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Bug pattern="MS_EXPOSE_REP"/>
+  </Match>
   <Match>
     <!-- generated code, we can't be held responsible for findbugs in it //-->
     <Class name="~org\.apache\.distributedlog\.tests\.generated.*" />
diff --git a/gradle.properties b/gradle.properties
index 58ef9bbd17..c230c3fcc9 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -21,10 +21,10 @@
 
 protobufPluginVersion=0.8.18
 apcheRatPluginVersion=0.7.0
-shadowPluginVersion=6.1.0
+shadowPluginVersion=7.1.2
 licenseGradlePluginVersion=0.15.0
 checkStyleVersion=6.19
-spotbugsPlugin=4.7.0
+spotbugsPlugin=5.0.5
 testLogger=3.1.0
 testRetry=1.0.0
 owaspPlugin=6.5.3
diff --git a/microbenchmarks/build.gradle b/microbenchmarks/build.gradle
index a58eea03b7..6acc6ef070 100644
--- a/microbenchmarks/build.gradle
+++ b/microbenchmarks/build.gradle
@@ -34,6 +34,7 @@ dependencies {
     compileOnly depLibs.jmhCore
     compileOnly depLibs.guava
     compileOnly depLibs.slf4j
+    compileOnly depLibs.spotbugsAnnotations
     annotationProcessor depLibs.jmhGeneratorAnnprocess
 }
 
diff --git a/microbenchmarks/src/main/java/org/apache/bookkeeper/stats/codahale/TimerBenchmark.java b/microbenchmarks/src/main/java/org/apache/bookkeeper/stats/codahale/TimerBenchmark.java
index 886cd6937f..c6d568fbdc 100644
--- a/microbenchmarks/src/main/java/org/apache/bookkeeper/stats/codahale/TimerBenchmark.java
+++ b/microbenchmarks/src/main/java/org/apache/bookkeeper/stats/codahale/TimerBenchmark.java
@@ -16,9 +16,9 @@
  */
 package org.apache.bookkeeper.stats.codahale;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.concurrent.ThreadLocalRandom;
 import java.util.concurrent.TimeUnit;
-
 import org.apache.bookkeeper.stats.OpStatsLogger;
 import org.apache.bookkeeper.stats.StatsLogger;
 import org.openjdk.jmh.annotations.Benchmark;
@@ -71,6 +71,7 @@ public class TimerBenchmark {
         private int timeIdx = 0;
 
         @Setup(Level.Trial)
+        @SuppressFBWarnings("SSD_DO_NOT_USE_INSTANCE_LOCK_ON_SHARED_STATIC_DATA")
         public void doSetup() throws Exception {
             StatsLogger logger = null;
             switch (timerType) {
diff --git a/pom.xml b/pom.xml
index 6cce137fc2..42f07393f7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -171,7 +171,7 @@
     <shrinkwrap.version>3.0.1</shrinkwrap.version>
     <slf4j.version>1.7.32</slf4j.version>
     <snakeyaml.version>1.30</snakeyaml.version>
-    <spotbugs-annotations.version>3.1.8</spotbugs-annotations.version>
+    <spotbugs-annotations.version>4.6.0</spotbugs-annotations.version>
     <javax-annotations-api.version>1.3.2</javax-annotations-api.version>
     <testcontainers.version>1.15.1</testcontainers.version>
     <vertx.version>3.9.8</vertx.version>
@@ -205,7 +205,7 @@
     <os-maven-plugin.version>1.4.1.Final</os-maven-plugin.version>
     <protobuf-maven-plugin.version>0.6.1</protobuf-maven-plugin.version>
     <puppycrawl.checkstyle.version>6.19</puppycrawl.checkstyle.version>
-    <spotbugs-maven-plugin.version>3.1.8</spotbugs-maven-plugin.version>
+    <spotbugs-maven-plugin.version>4.6.0.0</spotbugs-maven-plugin.version>
     <forkCount.variable>1</forkCount.variable>
     <servlet-api.version>4.0.0</servlet-api.version>
     <rxjava.version>3.0.1</rxjava.version>
diff --git a/stream/distributedlog/core/build.gradle b/stream/distributedlog/core/build.gradle
index 2af471ac7a..f8812f9a0a 100644
--- a/stream/distributedlog/core/build.gradle
+++ b/stream/distributedlog/core/build.gradle
@@ -36,6 +36,7 @@ dependencies {
     implementation depLibs.guava
     compileOnly depLibs.jsr305
     compileOnly depLibs.lombok
+    compileOnly depLibs.spotbugsAnnotations
     implementation depLibs.nettyBuffer
     implementation depLibs.nettyTransportNativeEpoll
     implementation depLibs.slf4j
diff --git a/stream/distributedlog/core/src/main/java/org/apache/distributedlog/impl/metadata/ZKLogStreamMetadataStore.java b/stream/distributedlog/core/src/main/java/org/apache/distributedlog/impl/metadata/ZKLogStreamMetadataStore.java
index 17f8113b98..b1ed272c41 100644
--- a/stream/distributedlog/core/src/main/java/org/apache/distributedlog/impl/metadata/ZKLogStreamMetadataStore.java
+++ b/stream/distributedlog/core/src/main/java/org/apache/distributedlog/impl/metadata/ZKLogStreamMetadataStore.java
@@ -32,10 +32,10 @@ import static org.apache.distributedlog.metadata.LogMetadata.VERSION_PATH;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.Lists;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.IOException;
 import java.net.URI;
 import java.util.Collections;
-
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Optional;
@@ -533,6 +533,7 @@ public class ZKLogStreamMetadataStore implements LogStreamMetadataStore {
         }, null);
     }
 
+    @SuppressFBWarnings("DCN_NULLPOINTER_EXCEPTION")
     static LogMetadataForWriter processLogMetadatas(URI uri,
                                                     String logName,
                                                     String logIdentifier,
diff --git a/stream/distributedlog/pom.xml b/stream/distributedlog/pom.xml
index 25bcd66dd5..8e86bb9cf1 100644
--- a/stream/distributedlog/pom.xml
+++ b/stream/distributedlog/pom.xml
@@ -37,6 +37,9 @@
     <module>core</module>
     <module>io</module>
   </modules>
+  <properties>
+    <spotbugs-annotations.version>4.6.0</spotbugs-annotations.version>
+  </properties>
   <build>
     <plugins>
       <plugin>
@@ -87,5 +90,21 @@
       </plugin>
     </plugins>
   </build>
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>com.github.spotbugs</groupId>
+        <artifactId>spotbugs-annotations</artifactId>
+        <version>${spotbugs-annotations.version}</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+  <dependencies>
+    <dependency>
+      <groupId>com.github.spotbugs</groupId>
+      <artifactId>spotbugs-annotations</artifactId>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
 </project>
 
diff --git a/tests/integration-tests-utils/src/main/java/org/apache/bookkeeper/tests/integration/utils/MavenClassLoader.java b/tests/integration-tests-utils/src/main/java/org/apache/bookkeeper/tests/integration/utils/MavenClassLoader.java
index 05724feae7..7c4137a6ff 100644
--- a/tests/integration-tests-utils/src/main/java/org/apache/bookkeeper/tests/integration/utils/MavenClassLoader.java
+++ b/tests/integration-tests-utils/src/main/java/org/apache/bookkeeper/tests/integration/utils/MavenClassLoader.java
@@ -37,8 +37,6 @@ import java.net.URLClassLoader;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -101,49 +99,38 @@ public class MavenClassLoader implements AutoCloseable {
 
     private static MavenClassLoader createClassLoader(File[] jars) {
         final ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
-        URLClassLoader cl = AccessController.doPrivileged(
-                new PrivilegedAction<URLClassLoader>() {
-                    @Override
-                    public URLClassLoader run() {
-                        /**
-                         * Child-first URLClassLoader.
-                         * This is needed because Gradle uses a different version of
-                         * Netty and it is placed in the System Class loader.
-                         */
-                        return new URLClassLoader(Arrays.stream(jars)
-                                .map((f) -> {
-                                    try {
-                                        return f.toURI().toURL();
-                                    } catch (Throwable t) {
-                                        throw new RuntimeException(t);
-                                    }
-                                })
-                                .toArray(URL[]::new),
-                                systemClassLoader) {
-
-                            @Override
-                            protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
-                                Class<?> loadedClass = findLoadedClass(name);
-                                if (loadedClass == null) {
-                                    try {
-                                        loadedClass = findClass(name);
-                                    } catch (ClassNotFoundException ignored) {
-                                    }
-                                    if (loadedClass == null) {
-                                        try {
-                                            loadedClass = systemClassLoader.loadClass(name);
-                                        } catch (ClassNotFoundException e) {
-                                        }
-                                    }
-                                }
-                                if (resolve && loadedClass != null) {
-                                    resolveClass(loadedClass);
-                                }
-                                return loadedClass;
-                            }
-                        };
+        URLClassLoader cl = new URLClassLoader(Arrays.stream(jars)
+                .map((f) -> {
+                    try {
+                        return f.toURI().toURL();
+                    } catch (Throwable t) {
+                        throw new RuntimeException(t);
+                    }
+                })
+                .toArray(URL[]::new),
+                systemClassLoader) {
+
+            @Override
+            protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
+                Class<?> loadedClass = findLoadedClass(name);
+                if (loadedClass == null) {
+                    try {
+                        loadedClass = findClass(name);
+                    } catch (ClassNotFoundException ignored) {
+                    }
+                    if (loadedClass == null) {
+                        try {
+                            loadedClass = systemClassLoader.loadClass(name);
+                        } catch (ClassNotFoundException e) {
+                        }
                     }
-                });
+                }
+                if (resolve && loadedClass != null) {
+                    resolveClass(loadedClass);
+                }
+                return loadedClass;
+            }
+        };
         return new MavenClassLoader(cl);
     }