From 38ebdfe04aff2f58bd298f8037cd6d69cc17cf9b Mon Sep 17 00:00:00 2001 From: yuan <1363654894@qq.com> Date: Tue, 3 Sep 2024 14:22:35 +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 --- .../main/java/com/muyu/load/OSSFileLoad.java | 4 ++-- .../com/muyu/util/SourceCodeCompiler.java | 23 ++++++++++++++----- 2 files changed, 19 insertions(+), 8 deletions(-) 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 dc99ece..17b2f73 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 @@ -76,9 +76,9 @@ public class OSSFileLoad { } //对路径里的.java文件进行编译 System.out.println("第一步"); - SourceCodeCompiler.javaCompilerPath("home/"); + SourceCodeCompiler.javaCompilerFile("home/"+fileName); System.out.println("第二步"); - File outputDir = new File("home/com/muyu/generate"); // 或者是你指定的其他输出目录 + File outputDir = new File("home/"); // 或者是你指定的其他输出目录 System.out.println("第三步"); File[] classFiles = outputDir.listFiles(); // 获取输出目录中的所有文件 if (classFiles != null) { diff --git a/cloud-rule-engine/src/main/java/com/muyu/util/SourceCodeCompiler.java b/cloud-rule-engine/src/main/java/com/muyu/util/SourceCodeCompiler.java index c93a36e..23321ec 100644 --- a/cloud-rule-engine/src/main/java/com/muyu/util/SourceCodeCompiler.java +++ b/cloud-rule-engine/src/main/java/com/muyu/util/SourceCodeCompiler.java @@ -59,12 +59,23 @@ public class SourceCodeCompiler { */ public static void javaCompiler(File...file){ try { -// //通过源文件获取到想要编译的java类源代码迭代器,包括所有的内部类,其中每一个类都是一个JavaFileObjects,也被称为一个汇编单元 -// Iterable javaFileObjects = fileManager.getJavaFileObjects(file); -// //生成编译任务 -// JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, null, Arrays.asList("-d","home/"), null, javaFileObjects); -// //执行编译任务 -// task.call(); + //通过源文件获取到想要编译的java类源代码迭代器,包括所有的内部类,其中每一个类都是一个JavaFileObjects,也被称为一个汇编单元 + Iterable javaFileObjects = fileManager.getJavaFileObjects(file); + //生成编译任务 + JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, null, Arrays.asList("-d","home/"), null, javaFileObjects); + //执行编译任务 + task.call(); + }catch (Exception e){ + log.error(e); + } + } + + /** + *可以编译单个java源代码 + * @param filePath + */ + public static void javaCompilerFile(String filePath){ + try { JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); int results = compiler.run(null, null, null, "/home/GenerateEmailSAW.java"); System.out.println((results == 0)?"编译成功":"编译失败");