in runner-starter/src/main/java/org/apache/apisix/plugin/runner/HotReloadProcess.java [78:100]
private BeanDefinitionBuilder compile(String userDir, String filterName, String filePath) throws ClassNotFoundException {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
String classDir = userDir + "/target/classes";
File file = new File(userDir);
if (!file.exists() && !file.isDirectory()) {
boolean flag = file.mkdirs();
if (!flag) {
logger.error("mkdirs:{} error", file.getAbsolutePath());
}
}
String[] args = {"-d", classDir, filePath};
compiler.run(null, null, null, args);
ClassLoader parentClassLoader = DynamicClassLoader.class.getClassLoader();
DynamicClassLoader classLoader = new DynamicClassLoader(parentClassLoader);
classLoader.setClassDir(classDir);
classLoader.setName(filterName);
classLoader.setPackageName(packageName);
Class<?> myObjectClass = classLoader.loadClass(filterName);
return BeanDefinitionBuilder.genericBeanDefinition(myObjectClass).setLazyInit(true);
}