diff options
| author | Kevin Chirls <kchirls@users.noreply.github.com> | 2017-03-15 09:26:36 -0700 |
|---|---|---|
| committer | Kevin Chirls <kchirls@users.noreply.github.com> | 2017-03-15 09:26:36 -0700 |
| commit | d146f362682654afd1a01c477836e72eadbd9e42 (patch) | |
| tree | 5491f9510b0539fdfc2e8f188d6f1ef89c77242a /src/launch/lombok | |
| parent | f765730526e061d39c3ecd44f37de6a7f7887cf0 (diff) | |
| parent | a2c10c70fa8e2c8736464a5c3d445e2ca6e8a296 (diff) | |
| download | lombok-d146f362682654afd1a01c477836e72eadbd9e42.tar.gz lombok-d146f362682654afd1a01c477836e72eadbd9e42.tar.bz2 lombok-d146f362682654afd1a01c477836e72eadbd9e42.zip | |
Merge remote-tracking branch 'rzwitserloot/master'
Diffstat (limited to 'src/launch/lombok')
| -rw-r--r-- | src/launch/lombok/launch/ShadowClassLoader.java | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/launch/lombok/launch/ShadowClassLoader.java b/src/launch/lombok/launch/ShadowClassLoader.java index 37c479ee..72f006e8 100644 --- a/src/launch/lombok/launch/ShadowClassLoader.java +++ b/src/launch/lombok/launch/ShadowClassLoader.java @@ -118,12 +118,16 @@ class ShadowClassLoader extends ClassLoader { SELF_BASE = selfBase; SELF_BASE_LENGTH = selfBase.length(); } else { - String sclClassUrl = ShadowClassLoader.class.getResource("ShadowClassLoader.class").toString(); - if (!sclClassUrl.endsWith(SELF_NAME)) throw new InternalError("ShadowLoader can't find itself."); - SELF_BASE_LENGTH = sclClassUrl.length() - SELF_NAME.length(); + URL sclClassUrl = ShadowClassLoader.class.getResource("ShadowClassLoader.class"); + String sclClassStr = sclClassUrl == null ? null : sclClassUrl.toString(); + if (sclClassStr == null || !sclClassStr.endsWith(SELF_NAME)) { + ClassLoader cl = ShadowClassLoader.class.getClassLoader(); + throw new RuntimeException("ShadowLoader can't find itself. SCL loader type: " + (cl == null ? "*NULL*" : cl.getClass().toString())); + } + SELF_BASE_LENGTH = sclClassStr.length() - SELF_NAME.length(); String decoded; try { - decoded = URLDecoder.decode(sclClassUrl.substring(0, SELF_BASE_LENGTH), "UTF-8"); + decoded = URLDecoder.decode(sclClassStr.substring(0, SELF_BASE_LENGTH), "UTF-8"); } catch (UnsupportedEncodingException e) { throw new InternalError("UTF-8 not available"); } @@ -451,7 +455,12 @@ class ShadowClassLoader extends ClassLoader { Class<?> alreadyDefined = highlanderMap.get(name); if (alreadyDefined != null) return alreadyDefined; } - throw e; + try { + c = this.findLoadedClass(name); + } catch (LinkageError e2) { + throw e; + } + if (c == null) throw e; } if (highlanders.contains(name)) { |
