You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Eric Milles (Jira)" <ji...@apache.org> on 2021/07/12 15:46:00 UTC
[jira] [Created] (GROOVY-10164) RootLoader cannot be set as system
class loader in Java 12+
Eric Milles created GROOVY-10164:
------------------------------------
Summary: RootLoader cannot be set as system class loader in Java 12+
Key: GROOVY-10164
URL: https://issues.apache.org/jira/browse/GROOVY-10164
Project: Groovy
Issue Type: Bug
Reporter: Eric Milles
Assignee: Eric Milles
Support for {{-Djava.system.class.loader=org.codehaus.groovy.tools.RootLoader}} is missing for Java 12+. The constructor that accepts {{ClassLoader}} is private. See code excerpt below that tries to call this constructor using reflection.
java.lang.ClassLoader
{code:java}
static synchronized ClassLoader initSystemClassLoader() {
// ...
String cn = System.getProperty("java.system.class.loader");
if (cn != null) {
try {
// custom class loader is only supported to be loaded from unnamed module
Constructor<?> ctor = Class.forName(cn, false, builtinLoader)
.getDeclaredConstructor(ClassLoader.class);
scl = (ClassLoader) ctor.newInstance(builtinLoader);
{code}
{code}
java.lang.Error: class java.lang.ClassLoader (in module java.base) cannot access a member of class org.codehaus.groovy.tools.RootLoader with modifiers "private"
at java.lang.ClassLoader.initSystemClassLoader(java.base@12.0.2/ClassLoader.java:1989)
at java.lang.System.initPhase3(java.base@12.0.2/System.java:2132)
Caused by: java.lang.IllegalAccessException: class java.lang.ClassLoader (in module java.base) cannot access a member of class org.codehaus.groovy.tools.RootLoader with modifiers "private"
at jdk.internal.reflect.Reflection.newIllegalAccessException(java.base@12.0.2/Reflection.java:376)
at java.lang.reflect.AccessibleObject.checkAccess(java.base@12.0.2/AccessibleObject.java:639)
at java.lang.reflect.Constructor.newInstanceWithCaller(java.base@12.0.2/Constructor.java:490)
at java.lang.reflect.Constructor.newInstance(java.base@12.0.2/Constructor.java:481)
at java.lang.ClassLoader.initSystemClassLoader(java.base@12.0.2/ClassLoader.java:1977)
at java.lang.System.initPhase3(java.base@12.0.2/System.java:2132)
{code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)