Repository: incubator-groovy Updated Branches: refs/heads/master e2254bfe4 -> 49653820e
GROOVY-7587: add code to bypass jigsaw exception and change a GCL method to avoid compilation problems with a new ClassLoader method Project: http://git-wip-us.apache.org/repos/asf/incubator-groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-groovy/commit/49653820 Tree: http://git-wip-us.apache.org/repos/asf/incubator-groovy/tree/49653820 Diff: http://git-wip-us.apache.org/repos/asf/incubator-groovy/diff/49653820 Branch: refs/heads/master Commit: 49653820edccd1c4c3aa0e14e7c394441bb0e643 Parents: e2254bf Author: Jochen Theodorou <blackd...@gmx.org> Authored: Mon Nov 2 13:23:55 2015 +0100 Committer: Jochen Theodorou <blackd...@gmx.org> Committed: Mon Nov 2 13:26:42 2015 +0100 ---------------------------------------------------------------------- src/main/groovy/lang/GroovyClassLoader.java | 6 +++--- src/main/org/codehaus/groovy/reflection/CachedClass.java | 3 +++ .../org/codehaus/groovy/reflection/CachedConstructor.java | 7 +++++-- src/main/org/codehaus/groovy/vmplugin/v7/Java7.java | 4 ++++ 4 files changed, 15 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/49653820/src/main/groovy/lang/GroovyClassLoader.java ---------------------------------------------------------------------- diff --git a/src/main/groovy/lang/GroovyClassLoader.java b/src/main/groovy/lang/GroovyClassLoader.java index 049d336..b606c6d 100644 --- a/src/main/groovy/lang/GroovyClassLoader.java +++ b/src/main/groovy/lang/GroovyClassLoader.java @@ -178,7 +178,7 @@ public class GroovyClassLoader extends URLClassLoader { unit.addClassNode(classNode); unit.setClassgenCallback(collector); unit.compile(Phases.CLASS_GENERATION); - definePackage(collector.generatedClass.getName()); + definePackageInternal(collector.generatedClass.getName()); return collector.generatedClass; } catch (CompilationFailedException e) { throw new RuntimeException(e); @@ -302,7 +302,7 @@ public class GroovyClassLoader extends URLClassLoader { for (Object o : collector.getLoadedClasses()) { Class clazz = (Class) o; String clazzName = clazz.getName(); - definePackage(clazzName); + definePackageInternal(clazzName); setClassCacheEntry(clazz); if (clazzName.equals(mainClass)) answer = clazz; } @@ -317,7 +317,7 @@ public class GroovyClassLoader extends URLClassLoader { } } - private void definePackage(String className) { + private void definePackageInternal(String className) { int i = className.lastIndexOf('.'); if (i != -1) { String pkgName = className.substring(0, i); http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/49653820/src/main/org/codehaus/groovy/reflection/CachedClass.java ---------------------------------------------------------------------- diff --git a/src/main/org/codehaus/groovy/reflection/CachedClass.java b/src/main/org/codehaus/groovy/reflection/CachedClass.java index aa3ec89..afba52a 100644 --- a/src/main/org/codehaus/groovy/reflection/CachedClass.java +++ b/src/main/org/codehaus/groovy/reflection/CachedClass.java @@ -55,6 +55,9 @@ public class CachedClass { AccessibleObject.setAccessible(df, true); } catch (SecurityException e) { // swallow for strict security managers + } catch (RuntimeException re) { + // test for JDK9 JIGSAW + if (!"java.lang.reflect.InaccessibleObjectException".equals(re.getClass().getName())) throw re; } return df; } http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/49653820/src/main/org/codehaus/groovy/reflection/CachedConstructor.java ---------------------------------------------------------------------- diff --git a/src/main/org/codehaus/groovy/reflection/CachedConstructor.java b/src/main/org/codehaus/groovy/reflection/CachedConstructor.java index e912a21..1d8f458 100644 --- a/src/main/org/codehaus/groovy/reflection/CachedConstructor.java +++ b/src/main/org/codehaus/groovy/reflection/CachedConstructor.java @@ -45,9 +45,12 @@ public class CachedConstructor extends ParameterTypes { return null; } }); - } - catch (SecurityException e) { + } catch (SecurityException e) { // IGNORE + } catch (RuntimeException re) { + // test for JDK9 JIGSAW + if (!"java.lang.reflect.InaccessibleObjectException".equals(re.getClass().getName())) throw re; + // else IGNORE } } http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/49653820/src/main/org/codehaus/groovy/vmplugin/v7/Java7.java ---------------------------------------------------------------------- diff --git a/src/main/org/codehaus/groovy/vmplugin/v7/Java7.java b/src/main/org/codehaus/groovy/vmplugin/v7/Java7.java index 4a26d82..93165b1 100644 --- a/src/main/org/codehaus/groovy/vmplugin/v7/Java7.java +++ b/src/main/org/codehaus/groovy/vmplugin/v7/Java7.java @@ -57,6 +57,10 @@ public class Java7 extends Java6 { } } catch (SecurityException se) { con = null; + } catch (RuntimeException re) { + // test for JDK9 JIGSAW + if (!"java.lang.reflect.InaccessibleObjectException".equals(re.getClass().getName())) throw re; + con = null; } LOOKUP_Constructor = con; }