diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/ClasspathHelper.java b/src/org/jetbrains/java/decompiler/modules/decompiler/ClasspathHelper.java index b8ceb06..83ad121 100644 --- a/src/org/jetbrains/java/decompiler/modules/decompiler/ClasspathHelper.java +++ b/src/org/jetbrains/java/decompiler/modules/decompiler/ClasspathHelper.java @@ -30,7 +30,8 @@ public class ClasspathHelper { private static Method findMethodOnClasspath(String targetClass, String methodSignature) { try { - Class cls = Class.forName(targetClass); + // use bootstrap classloader to only provide access to JRE classes + Class cls = new ClassLoader(null) {}.loadClass(targetClass); for (Method mtd : cls.getMethods()) { // use contains() to ignore access modifiers and thrown exceptions if (mtd.toString().contains(methodSignature)) { diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/InvocationExprent.java b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/InvocationExprent.java index 5f3c197..8d53711 100644 --- a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/InvocationExprent.java +++ b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/InvocationExprent.java @@ -394,6 +394,8 @@ public class InvocationExprent extends Exprent { } } else { + // TODO: tap into IDEA indices to access libraries methods details + // try to check the class on the classpath Method mtd = ClasspathHelper.findMethod(classname, name, descriptor); return mtd != null && mtd.isVarArgs();