feat():测试

yuan
yuan 2024-09-06 11:03:18 +08:00
parent 73d586561c
commit 1a1dd5a446
1 changed files with 32 additions and 2 deletions

View File

@ -2,17 +2,22 @@ package com.muyu.compile;
import com.muyu.common.core.domain.Result; import com.muyu.common.core.domain.Result;
import com.muyu.common.domain.DataValue;
import com.muyu.constant.MethodSuffix; import com.muyu.constant.MethodSuffix;
import com.muyu.engine.basic.BasicEngine;
import com.muyu.upload.ALiYunUpload; import com.muyu.upload.ALiYunUpload;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import javax.tools.*; import javax.tools.*;
import java.io.*; import java.io.*;
import java.lang.reflect.InvocationTargetException;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/** /**
* @Author * @Author
@ -25,6 +30,8 @@ public class FilesCompilerLoad {
private static final Logger log = LoggerFactory.getLogger(FilesCompilerLoad.class); private static final Logger log = LoggerFactory.getLogger(FilesCompilerLoad.class);
static Map<String , BasicEngine<DataValue>> engineMap = new ConcurrentHashMap<>();
public static Result<Object> javaCompiler(String fileName){ public static Result<Object> javaCompiler(String fileName){
@ -46,6 +53,8 @@ public class FilesCompilerLoad {
public static Result<Object> classLoad(String fileName){ public static Result<Object> classLoad(String fileName){
Class<?> clazz ;
try { try {
// class文件路径 // class文件路径
String externalClassFilePath = "/home/lib/com/muyu/generate/"+fileName + MethodSuffix.CLASSSUFFIX; String externalClassFilePath = "/home/lib/com/muyu/generate/"+fileName + MethodSuffix.CLASSSUFFIX;
@ -60,14 +69,35 @@ public class FilesCompilerLoad {
log.info("开始创建加载器..."); log.info("开始创建加载器...");
// 加载类 // 加载类
// 注意类名必须是完全限定名(包括包名) // 注意类名必须是完全限定名(包括包名)
Class<?> clazz = externalClassLoader.loadClassFromPath(path, "com.muyu.generate."+fileName); clazz = externalClassLoader.loadClassFromPath(path, "com.muyu.generate."+fileName);
System.out.println(clazz); log.info("加载成功:[{}]",clazz.getName());
} catch (MalformedURLException e) { } catch (MalformedURLException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
try {
Object instance = clazz.getDeclaredConstructor().newInstance();
engineMap.put(fileName, (BasicEngine<DataValue>) instance);
} catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
throw new RuntimeException(e);
}
DataValue dataValue = DataValue.builder()
.type("String")
.label("姓名")
.key("name")
.value("张三")
.build();
BasicEngine<DataValue> engine = engineMap.get(fileName);
engine.set(dataValue);
engine.execution();
return Result.success(); return Result.success();
} }