Share the same class loader

This commit is contained in:
Roland Praml authored and Roel Spilker committed 2018-08-20 20:46:31 +02:00
1 parent 763b384a16
commit c157e6537b
4 files changed
+12 -6

No files matched your search

@@ -92,7 +92,7 @@ final class PatchFixesHider {
shadowLoader = Util.class.getClassLoader();
} catch (ClassNotFoundException e) {
// If we get here, it isn't, and we should use the shadowloader.
shadowLoader = Main.createShadowClassLoader();
shadowLoader = Main.getShadowClassLoader();
}
}
+1 -1
View File
@@ -35,7 +35,7 @@ final class Agent {
}
private static void runLauncher(String agentArgs, Instrumentation instrumentation, boolean injected) throws Throwable {
ClassLoader cl = Main.createShadowClassLoader();
ClassLoader cl = Main.getShadowClassLoader();
try {
Class<?> c = cl.loadClass("lombok.core.AgentLauncher");
Method m = c.getDeclaredMethod("runAgents", String.class, Instrumentation.class, boolean.class, Class.class);
@@ -104,7 +104,7 @@ class AnnotationProcessorHider {
}
private static AbstractProcessor createWrappedInstance() {
ClassLoader cl = Main.createShadowClassLoader();
ClassLoader cl = Main.getShadowClassLoader();
try {
Class<?> mc = cl.loadClass("lombok.core.AnnotationProcessor");
return (AbstractProcessor) mc.getDeclaredConstructor().newInstance();
+9 -3
View File
@@ -25,12 +25,18 @@ import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
class Main {
static ClassLoader createShadowClassLoader() {
return new ShadowClassLoader(Main.class.getClassLoader(), "lombok", null, Arrays.<String>asList(), Arrays.asList("lombok.patcher.Symbols"));
private static ShadowClassLoader classLoader;
static synchronized ClassLoader getShadowClassLoader() {
if (classLoader == null) {
classLoader = new ShadowClassLoader(Main.class.getClassLoader(), "lombok", null, Arrays.<String>asList(), Arrays.asList("lombok.patcher.Symbols"));
}
return classLoader;
}
public static void main(String[] args) throws Throwable {
ClassLoader cl = createShadowClassLoader();
ClassLoader cl = getShadowClassLoader();
Class<?> mc = cl.loadClass("lombok.core.Main");
try {
mc.getMethod("main", String[].class).invoke(null, new Object[] {args});