Use bootstrap classloader to only provide access to JRE classes
This commit is contained in:
committed by
Egor.Ushakov
parent
592a24cd85
commit
5de2e5b11b
@@ -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)) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user