From ae63ab2c0ee5014c7b6fbe54ed19d32a4b8caccc Mon Sep 17 00:00:00 2001 From: yuan <1363654894@qq.com> Date: Mon, 2 Sep 2024 19:48:38 +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 | 9 ------ .../com/muyu/util/SourceCodeCompiler.java | 28 ++++++++++++++++++- 2 files changed, 27 insertions(+), 10 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 40345c5..dc99ece 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 @@ -74,15 +74,6 @@ public class OSSFileLoad { ossClient.shutdown(); } } - System.out.println("----------------------------"); - try { - String command = "javac -cp . " + ":/home/app.jar" + fileName; - Process process = Runtime.getRuntime().exec(command); - process.waitFor(); - } catch (Exception e) { - e.printStackTrace(); - } - System.out.println("----------------------------"); //对路径里的.java文件进行编译 System.out.println("第一步"); SourceCodeCompiler.javaCompilerPath("home/"); 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 46017fa..dac1c1e 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 @@ -9,6 +9,7 @@ import javax.tools.StandardJavaFileManager; import javax.tools.ToolProvider; import java.io.File; import java.util.Arrays; +import java.util.Collections; import java.util.List; public class SourceCodeCompiler { @@ -61,7 +62,7 @@ public class SourceCodeCompiler { //通过源文件获取到想要编译的java类源代码迭代器,包括所有的内部类,其中每一个类都是一个JavaFileObjects,也被称为一个汇编单元 Iterable javaFileObjects = fileManager.getJavaFileObjects(file); //生成编译任务 - JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, null, Arrays.asList("-d","home/"), null, javaFileObjects); + JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, null, Arrays.asList("-d","home/","cp","/home/app.jar"), null, javaFileObjects); //执行编译任务 task.call(); }catch (Exception e){ @@ -69,4 +70,29 @@ public class SourceCodeCompiler { } } + // try { +// // 初始化 fileManager(此处省略,假设您已有此步骤) +// +// // 创建一个包含所有依赖 JAR 文件的类路径列表 +// List classpath = Arrays.asList( +// "/home/app.jar" +// ); +// +// // 通过源文件获取到想要编译的 JavaFileObjects +// Iterable javaFileObjects = fileManager.getJavaFileObjectsFromFiles(Arrays.asList(file)); +// +// // 生成编译任务,包含类路径 +// JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, null, +// Collections.singletonList("-d"), null, classpath, javaFileObjects); +// +// // 执行编译任务 +// boolean success = task.call(); +// if (!success) { +// throw new RuntimeException("Compilation failed"); +// } +// } catch (Exception e) { +// // 适当的错误处理 +// e.printStackTrace(); // 或使用日志记录 +// } + }