mirror of
https://github.com/tiennm99/lombok.git
synced 2026-10-15 10:15:19 +00:00
Share the same class loader
This commit is contained in:
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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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});
|
||||
|
||||
Reference in new issue
Block a user