/**
* 获取类对象
* @param classPath class所处的位置(classes顾名思义就是编译后的.class文件所在位置)
* 比如: D:/work/base-server/target/classes/com/company/base/controller
* @param className 需要获取到的类名称
* 比如: UserController
* @return
*/
public static Class<?> findClass(String classPath,String className){
ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
//获取路径classes的路径
String prefix = classPath.substring(0,classPath.indexOf("classes")+8);
//这里得到的就是com.company.base.controller包的全名
String packageName = classPath.substring(classPath.indexOf("classes")+8).replaceAll("/",".");
try {
URL classes = new URL("file:///"+prefix);
ClassLoader custom =
new URLClassLoader(new URL[]{classes}, systemClassLoader);
Class<?> clazz = custom.loadClass(packageName+"."+className);
return clazz;
}catch (Exception e){
e.printStackTrace();
}
return null;
}
这样就可以加载到项目之外的类了,拿到类对象后,需要获取这个类的注解、方法等等就都好办了