/* * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template */ package com.megatim.dynamicjsonparser.extender; import org.burningwave.core.assembler.ComponentContainer; import static org.burningwave.core.assembler.StaticComponentContainer.ClassLoaders; import org.burningwave.core.classes.JavaMemoryCompiler; import org.burningwave.core.classes.JavaMemoryCompiler.Compilation; import org.burningwave.core.classes.UnitSourceGenerator; import org.burningwave.core.concurrent.QueuedTaskExecutor.ProducerTask; /** * * @author ASUS */ public class SourceCompiler { public static Class compileAndLoad(UnitSourceGenerator unitSG, String binaryFilePath, String fullQualifiedName) throws ClassNotFoundException { ComponentContainer componentContainer = ComponentContainer.getInstance(); JavaMemoryCompiler javaMemoryCompiler = componentContainer.getJavaMemoryCompiler(); ProducerTask compilationTask = javaMemoryCompiler.compile( Compilation.Config.forUnitSourceGenerator(unitSG).storeCompiledClassesTo(binaryFilePath)); Compilation.Result compilationResult = compilationTask.join(); ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); ClassLoaders.addClassPaths(classLoader, compilationResult.getDependencies()); ClassLoaders.addClassPath(classLoader, compilationResult.getClassPath().getAbsolutePath()); return classLoader.loadClass(fullQualifiedName); } }