From e965382c3bdb0d51f47177dc35887d0725fd3960 Mon Sep 17 00:00:00 2001 From: yuan <1363654894@qq.com> Date: Wed, 4 Sep 2024 20:32:20 +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 | 24 ++++++++++-- .../main/java/com/muyu/load/OSSFileLoad.java | 37 ++++++++----------- .../com/muyu/util/SourceCodeCompiler.java | 4 +- 3 files changed, 38 insertions(+), 27 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 3617543..333bf58 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 @@ -25,12 +25,11 @@ public class OSSFileCompile{ public static Result compile(String source){ JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null); + String[] strings = {"-classpath","home/","-verbose","-d", "home/", source }; // 执行编译任务 - Iterable compilationUnits = fileManager.getJavaFileObjectsFromStrings(Arrays.asList(source)); - Boolean result = compiler.getTask(null, fileManager, null, Arrays.asList("-cp", "/home/lib"), null, compilationUnits).call(); -// int result = compiler.run(null, null, null, source); + int result = compiler.run(null, null, null, strings); // 检查编译结果 - if (result) { + if (result == 0) { System.out.println("编译成功,生成的.class文件位于源代码同目录"); return Result.success("编译成功,生成的.class文件位于源代码同目录"); } else { @@ -39,4 +38,21 @@ public class OSSFileCompile{ } } +// public static Result compile(String source){ +// JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); +// StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null); +// // 执行编译任务 +// Iterable compilationUnits = fileManager.getJavaFileObjectsFromStrings(Arrays.asList(source)); +// Boolean result = compiler.getTask(null, fileManager, null, Arrays.asList("-cp", "/home/lib"), null, compilationUnits).call(); +//// int result = compiler.run(null, null, null, source); +// // 检查编译结果 +// if (result) { +// System.out.println("编译成功,生成的.class文件位于源代码同目录"); +// return Result.success("编译成功,生成的.class文件位于源代码同目录"); +// } else { +// System.out.println("编译失败"); +// return Result.error("编译失败"); +// } +// } + } 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 6fc46db..b421352 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 @@ -80,27 +80,22 @@ public class OSSFileLoad { } //对路径里的.java文件进行编译 System.out.println("第一步"); -// OSSFileCompile.compile("home/"+fileName); - SourceCodeCompiler.javaCompilerPath("home/"); - System.out.println("第二步"); - File outputDir = new File("home/"); // 或者是你指定的其他输出目录 - System.out.println("第三步"); - File[] classFiles = outputDir.listFiles(); // 获取输出目录中的所有文件 - if (classFiles != null) { - for (File classFile : classFiles) { - if (classFile.getName().endsWith(".class")) { - System.out.println("找到class文件 " + classFile.getName()); - -// 把.class文件存入oss中 - - - - } - } - - }else { - System.out.println("没有找到文件"); - } + OSSFileCompile.compile("home/"+fileName); +// SourceCodeCompiler.javaCompilerPath("home/"); +// System.out.println("第二步"); +// File outputDir = new File("home/"); // 或者是你指定的其他输出目录 +// System.out.println("第三步"); +// File[] classFiles = outputDir.listFiles(); // 获取输出目录中的所有文件 +// if (classFiles != null) { +// for (File classFile : classFiles) { +// if (classFile.getName().endsWith(".class")) { +// System.out.println("找到class文件 " + classFile.getName()); +//// 把.class文件存入oss中 +// } +// } +// }else { +// System.out.println("没有找到文件"); +// } return Result.success(source); } 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 e906177..e203d13 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 @@ -60,9 +60,9 @@ public class SourceCodeCompiler { try { //通过源文件获取到想要编译的java类源代码迭代器,包括所有的内部类,其中每一个类都是一个JavaFileObjects,也被称为一个汇编单元 Iterable javaFileObjects = fileManager.getJavaFileObjects(file); - String[] strings = {"-classpath","home/","-verbose","-d", "home/"}; + List list = Arrays.asList("-classpath","home","-verbose","-d", "home/",javaFileObjects); //生成编译任务 - JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, null, List.of(strings), null, javaFileObjects); + JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, null, Arrays.asList("-d","home/"), null, javaFileObjects); //执行编译任务 task.call(); }catch (Exception e){