Skip to content

Instantly share code, notes, and snippets.

@hartmut27
Created September 12, 2020 15:15
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hartmut27/915a732f5e09ca4b3e0b9d577572cc76 to your computer and use it in GitHub Desktop.
Save hartmut27/915a732f5e09ca4b3e0b9d577572cc76 to your computer and use it in GitHub Desktop.
Turn off jdk.internal.module.IllegalAccessLogger warnings / Work-around / OpenJDK 14
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class IllegalAccessLogger_TurnOff {
public static void main(String[] args) {
disableAccessWarnings();
}
@SuppressWarnings("unchecked")
public static void disableAccessWarnings() {
try {
Class unsafeClass = Class.forName("sun.misc.Unsafe");
Field field = unsafeClass.getDeclaredField("theUnsafe");
field.setAccessible(true);
Object unsafe = field.get(null);
Method putObjectVolatile = unsafeClass.getDeclaredMethod("putObjectVolatile", Object.class, long.class, Object.class);
Method staticFieldOffset = unsafeClass.getDeclaredMethod("staticFieldOffset", Field.class);
Class loggerClass = Class.forName("jdk.internal.module.IllegalAccessLogger");
Field loggerField = loggerClass.getDeclaredField("logger");
Long offset = (Long) staticFieldOffset.invoke(unsafe, loggerField);
putObjectVolatile.invoke(unsafe, loggerClass, offset, null);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment