From 7df082388a18891a5574c45659b6cdab8e70fe34 Mon Sep 17 00:00:00 2001 From: yuan <1363654894@qq.com> Date: Sat, 31 Aug 2024 23:52:29 +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 --- .../java/com/muyu/compile/OSSFileCompile.java | 48 +++++++++++++------ .../main/java/com/muyu/load/OSSFileLoad.java | 5 +- 2 files changed, 37 insertions(+), 16 deletions(-) diff --git a/cloud-rule-engine/src/main/java/com/muyu/compile/OSSFileCompile.java b/cloud-rule-engine/src/main/java/com/muyu/compile/OSSFileCompile.java index 3c7a568..5cb9693 100644 --- a/cloud-rule-engine/src/main/java/com/muyu/compile/OSSFileCompile.java +++ b/cloud-rule-engine/src/main/java/com/muyu/compile/OSSFileCompile.java @@ -1,6 +1,8 @@ package com.muyu.compile; +import com.muyu.common.core.domain.Result; + import javax.tools.*; import java.io.IOException; import java.util.Arrays; @@ -16,22 +18,40 @@ import java.util.Map; */ public class OSSFileCompile{ - public static Map compile(String fileName, String source,String extLib) throws IOException { - System.out.println("-------"); +// public static Map compile(String fileName, String source,String extLib) throws IOException { +// System.out.println("-------"); +// JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); +// StandardJavaFileManager stdManager = compiler.getStandardFileManager(null, null, null); +// try (MemoryJavaFileManager manager = new MemoryJavaFileManager(stdManager)) { +// JavaFileObject javaFileObject = manager.makeStringSource(fileName, source); +// // 传入诊断监听器 size和传入的javaObject相同 +// DiagnosticCollector diagnosticCollector = new DiagnosticCollector(); +// List optionList = Arrays.asList("-extdirs",extLib); +// JavaCompiler.CompilationTask task = compiler.getTask(null, manager,diagnosticCollector, optionList, null, Arrays.asList(javaFileObject)); +// Boolean result = task.call(); +// if (result == null || !result.booleanValue()) { +// throw new RuntimeException("Compilation failed."); +// } +// return manager.getClassBytes(); +// } +// } + + public static Result compile(String source,String extLib){ + // 获取系统Java编译器 JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); - StandardJavaFileManager stdManager = compiler.getStandardFileManager(null, null, null); - try (MemoryJavaFileManager manager = new MemoryJavaFileManager(stdManager)) { - JavaFileObject javaFileObject = manager.makeStringSource(fileName, source); - // 传入诊断监听器 size和传入的javaObject相同 - DiagnosticCollector diagnosticCollector = new DiagnosticCollector(); - List optionList = Arrays.asList("-extdirs",extLib); - JavaCompiler.CompilationTask task = compiler.getTask(null, manager,diagnosticCollector, optionList, null, Arrays.asList(javaFileObject)); - Boolean result = task.call(); - if (result == null || !result.booleanValue()) { - throw new RuntimeException("Compilation failed."); - } - return manager.getClassBytes(); + + // 调用编译器的compile方法编译源代码,可以添加编译选项和输出目录等 + int result = compiler.run(null, null, null, source); + + // 检查编译结果 + if (result == 0) { + System.out.println("编译成功,生成的.class文件位于源代码同目录"); + Result.success("编译成功,生成的.class文件位于源代码同目录"); + } else { + System.out.println("编译失败"); + Result.error("编译失败"); } + return null; } } diff --git a/cloud-rule-engine/src/main/java/com/muyu/load/OSSFileLoad.java b/cloud-rule-engine/src/main/java/com/muyu/load/OSSFileLoad.java index cb4faf7..fa6b3f0 100644 --- a/cloud-rule-engine/src/main/java/com/muyu/load/OSSFileLoad.java +++ b/cloud-rule-engine/src/main/java/com/muyu/load/OSSFileLoad.java @@ -61,8 +61,9 @@ public class OSSFileLoad { // 关闭oss ossClient.shutdown(); - Map compile = OSSFileCompile.compile(fileName, source, "target/"); - compile.forEach((key, value) -> {}); +// Map compile = OSSFileCompile.compile(fileName, source, "target/"); + Result compile = OSSFileCompile.compile(source, "target/"); + System.out.println(compile.getData()); return Result.success(source); }