From ef60d1af001204622b428e78894c967a9aee7e91 Mon Sep 17 00:00:00 2001 From: Reinier Zwitserloot Date: Wed, 21 Jan 2015 01:10:50 +0100 Subject: * Fixed running ecj tests within eclipse --- src/eclipseAgent/lombok/launch/PatchFixesHider.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/eclipseAgent/lombok/launch') diff --git a/src/eclipseAgent/lombok/launch/PatchFixesHider.java b/src/eclipseAgent/lombok/launch/PatchFixesHider.java index 23774d0f..2472ca3c 100644 --- a/src/eclipseAgent/lombok/launch/PatchFixesHider.java +++ b/src/eclipseAgent/lombok/launch/PatchFixesHider.java @@ -74,9 +74,22 @@ final class PatchFixesHider { /** These utility methods are only used 'internally', but because of transplant methods, the class (and its methods) still have to be public! */ public static final class Util { + private static ClassLoader shadowLoader; + public static Class shadowLoadClass(String name) { try { - return Class.forName(name, true, Main.createShadowClassLoader()); + if (shadowLoader == null) { + try { + Class.forName("lombok.core.LombokNode"); + // If we get here, then lombok is already available. + shadowLoader = Util.class.getClassLoader(); + } catch (ClassNotFoundException e) { + // If we get here, it isn't, and we should use the shadowloader. + shadowLoader = Main.createShadowClassLoader(); + } + } + + return Class.forName(name, true, shadowLoader); } catch (ClassNotFoundException e) { throw sneakyThrow(e); } -- cgit