mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

pvarga88
18.29.2020 cc09c317e0b6f8076db72c8fee922d5122022888
Fix illegal reflective access warning for OnDiskMergeImporter in Java9+ (#100)

1 files modified
12 ■■■■■ changed files
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeImporter.java 12 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeImporter.java
@@ -2955,7 +2955,16 @@
      {
        Method tmpDirectBufferCleanerMethod = null;
        Method tmpDirectBufferCleanerCleanMethod = null;
        boolean tmpCleanSupported;
        boolean tmpCleanSupported = false;
        //
        // We know that this will fail in Java 9+ since sun.misc.Cleaner was moved to jdk.internal.ref.Cleaner (see JDK-8148117)
        // Also in Java9+, calling 'setAccessible(true)' to Java internal classes generates warnings:
        // * WARNING: An illegal reflective access operation has occurred
        // * WARNING: All illegal access operations will be denied in a future release
        // unless the JVM is started with the 'add-opens=java.base/java.nio=ALL-UNNAMED' flag
        // Since this is only an optimization, avoid it completely in Java 9+
        //
        if (System.getProperty("java.version").startsWith("1.")) {
        try
        {
          tmpDirectBufferCleanerMethod = Class.forName("java.nio.DirectByteBuffer").getMethod("cleaner");
@@ -2968,6 +2977,7 @@
        {
          tmpCleanSupported = false;
        }
        }
        CLEAN_SUPPORTED = tmpCleanSupported;
        directBufferCleanerMethod = tmpDirectBufferCleanerMethod;
        directBufferCleanerCleanMethod = tmpDirectBufferCleanerCleanMethod;