diff --git a/platform/util/src/com/intellij/openapi/util/ClassLoaderUtil.java b/platform/util/src/com/intellij/openapi/util/ClassLoaderUtil.java index 9d72f48c51b7..6762929d0707 100644 --- a/platform/util/src/com/intellij/openapi/util/ClassLoaderUtil.java +++ b/platform/util/src/com/intellij/openapi/util/ClassLoaderUtil.java @@ -18,6 +18,7 @@ package com.intellij.openapi.util; import com.intellij.util.ThrowableRunnable; import com.intellij.util.lang.UrlClassLoader; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class ClassLoaderUtil { private ClassLoaderUtil() { @@ -69,16 +70,22 @@ public class ClassLoaderUtil { } } - public static void addPlatformLoaderParentIfOnJdk9(@NotNull UrlClassLoader.Builder builder) { + @Nullable + public static ClassLoader getPlatformLoaderParentIfOnJdk9() { if (SystemInfo.IS_AT_LEAST_JAVA9) { // on Java 8, 'tools.jar' is on a classpath; on Java 9, its classes are available via the platform loader try { - ClassLoader platformCl = (ClassLoader)ClassLoader.class.getMethod("getPlatformClassLoader").invoke(null); - builder.parent(platformCl); + //noinspection JavaReflectionMemberAccess + return (ClassLoader)ClassLoader.class.getMethod("getPlatformClassLoader").invoke(null); } catch (Exception e) { throw new RuntimeException(e); } } + return null; + } + + public static void addPlatformLoaderParentIfOnJdk9(@NotNull UrlClassLoader.Builder builder) { + builder.parent(getPlatformLoaderParentIfOnJdk9()); } } diff --git a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/InProcessGroovyc.java b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/InProcessGroovyc.java index 6d6803723807..e28b211383c7 100644 --- a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/InProcessGroovyc.java +++ b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/InProcessGroovyc.java @@ -175,11 +175,11 @@ class InProcessGroovyc implements GroovycFlavor { private JointCompilationClassLoader createCompilationClassLoader(Collection compilationClassPath) throws Exception { ClassLoader parent = obtainParentLoader(compilationClassPath); - ClassLoader groovyClassLoader = null; + ClassLoader groovyClassLoader; try { ClassLoader auxiliary = parent != null ? parent : buildCompilationClassLoader(compilationClassPath, null).get(); Class gcl = auxiliary.loadClass("groovy.lang.GroovyClassLoader"); - groovyClassLoader = (ClassLoader)gcl.getConstructor(ClassLoader.class).newInstance(parent); + groovyClassLoader = (ClassLoader)gcl.getConstructor(ClassLoader.class).newInstance(parent != null ? parent : ClassLoaderUtil.getPlatformLoaderParentIfOnJdk9()); } catch (ClassNotFoundException e) { return null;