From 1af6b8c8b63b6a9f6e513cce00f8ec76687bd88b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=91=E6=88=9F?= Date: Mon, 30 Nov 2020 21:32:13 +0800 Subject: [PATCH] fit private access for gradle build --- .../EnablePrivateAccessTranslator.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/testable-processor/src/main/java/com/alibaba/testable/processor/translator/EnablePrivateAccessTranslator.java b/testable-processor/src/main/java/com/alibaba/testable/processor/translator/EnablePrivateAccessTranslator.java index 53270b5..1c08e9b 100644 --- a/testable-processor/src/main/java/com/alibaba/testable/processor/translator/EnablePrivateAccessTranslator.java +++ b/testable-processor/src/main/java/com/alibaba/testable/processor/translator/EnablePrivateAccessTranslator.java @@ -10,6 +10,8 @@ import com.sun.tools.javac.util.Name; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import java.net.URL; +import java.net.URLClassLoader; /** * Travel AST @@ -41,7 +43,19 @@ public class EnablePrivateAccessTranslator extends BaseTranslator { this.sourceClassName = testClassName.substring(0, testClassName.length() - ConstPool.TEST_POSTFIX.length()); this.privateAccessStatementGenerator = new PrivateAccessStatementGenerator(cx); try { - Class cls = Class.forName(pkgName + "." + sourceClassName); + Class cls = null; + String sourceClassFullName = pkgName + "." + sourceClassName; + try { + cls = Class.forName(sourceClassFullName); + } catch (ClassNotFoundException e) { + // fit for gradle build + String path = "file:" + System.getProperty("user.dir") + "/build/classes/java/main/"; + cls = new URLClassLoader(new URL[]{new URL(path)}).loadClass(sourceClassFullName); + } + if (cls == null) { + System.err.println("Failed to load source class: " + sourceClassFullName); + return; + } Field[] fields = cls.getDeclaredFields(); for (Field f : fields) { if (Modifier.isFinal(f.getModifiers()) || Modifier.isPrivate(f.getModifiers())) {