From 1a1dd5a446d0e1b32a2d775e70cc9dee45f5bcd1 Mon Sep 17 00:00:00 2001 From: yuan <1363654894@qq.com> Date: Fri, 6 Sep 2024 11:03:18 +0800 Subject: [PATCH] =?UTF-8?q?feat():=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/muyu/compile/FilesCompilerLoad.java | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/cloud-rule-engine/src/main/java/com/muyu/compile/FilesCompilerLoad.java b/cloud-rule-engine/src/main/java/com/muyu/compile/FilesCompilerLoad.java index c5574b4..325a9f1 100644 --- a/cloud-rule-engine/src/main/java/com/muyu/compile/FilesCompilerLoad.java +++ b/cloud-rule-engine/src/main/java/com/muyu/compile/FilesCompilerLoad.java @@ -2,17 +2,22 @@ package com.muyu.compile; import com.muyu.common.core.domain.Result; +import com.muyu.common.domain.DataValue; import com.muyu.constant.MethodSuffix; +import com.muyu.engine.basic.BasicEngine; import com.muyu.upload.ALiYunUpload; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.tools.*; import java.io.*; +import java.lang.reflect.InvocationTargetException; import java.net.MalformedURLException; import java.net.URL; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; /** * @Author:蓬叁 @@ -25,6 +30,8 @@ public class FilesCompilerLoad { private static final Logger log = LoggerFactory.getLogger(FilesCompilerLoad.class); + static Map> engineMap = new ConcurrentHashMap<>(); + public static Result javaCompiler(String fileName){ @@ -46,6 +53,8 @@ public class FilesCompilerLoad { public static Result classLoad(String fileName){ + Class clazz ; + try { // class文件路径 String externalClassFilePath = "/home/lib/com/muyu/generate/"+fileName + MethodSuffix.CLASSSUFFIX; @@ -60,14 +69,35 @@ public class FilesCompilerLoad { log.info("开始创建加载器..."); // 加载类 // 注意类名必须是完全限定名(包括包名) - Class clazz = externalClassLoader.loadClassFromPath(path, "com.muyu.generate."+fileName); - System.out.println(clazz); + clazz = externalClassLoader.loadClassFromPath(path, "com.muyu.generate."+fileName); + log.info("加载成功:[{}]",clazz.getName()); } catch (MalformedURLException e) { throw new RuntimeException(e); } catch (IOException e) { throw new RuntimeException(e); } + + try { + Object instance = clazz.getDeclaredConstructor().newInstance(); + + engineMap.put(fileName, (BasicEngine) instance); + + } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { + throw new RuntimeException(e); + } + + DataValue dataValue = DataValue.builder() + .type("String") + .label("姓名") + .key("name") + .value("张三") + .build(); + + BasicEngine engine = engineMap.get(fileName); + engine.set(dataValue); + engine.execution(); + return Result.success(); }