private BeanDefinitionBuilder compile()

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);
    }