feat():测试

yuan
yuan 2024-09-04 20:32:20 +08:00
parent 8cc215d549
commit e965382c3b
3 changed files with 38 additions and 27 deletions

View File

@ -25,12 +25,11 @@ public class OSSFileCompile{
public static Result<Object> compile(String source){ public static Result<Object> compile(String source){
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null); StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
String[] strings = {"-classpath","home/","-verbose","-d", "home/", source };
// 执行编译任务 // 执行编译任务
Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromStrings(Arrays.asList(source)); int result = compiler.run(null, null, null, strings);
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) { if (result == 0) {
System.out.println("编译成功,生成的.class文件位于源代码同目录"); System.out.println("编译成功,生成的.class文件位于源代码同目录");
return Result.success("编译成功,生成的.class文件位于源代码同目录"); return Result.success("编译成功,生成的.class文件位于源代码同目录");
} else { } else {
@ -39,4 +38,21 @@ public class OSSFileCompile{
} }
} }
// public static Result<Object> compile(String source){
// JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
// StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
// // 执行编译任务
// Iterable<? extends JavaFileObject> 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("编译失败");
// }
// }
} }

View File

@ -80,27 +80,22 @@ public class OSSFileLoad {
} }
//对路径里的.java文件进行编译 //对路径里的.java文件进行编译
System.out.println("第一步"); System.out.println("第一步");
// OSSFileCompile.compile("home/"+fileName); OSSFileCompile.compile("home/"+fileName);
SourceCodeCompiler.javaCompilerPath("home/"); // SourceCodeCompiler.javaCompilerPath("home/");
System.out.println("第二步"); // System.out.println("第二步");
File outputDir = new File("home/"); // 或者是你指定的其他输出目录 // File outputDir = new File("home/"); // 或者是你指定的其他输出目录
System.out.println("第三步"); // System.out.println("第三步");
File[] classFiles = outputDir.listFiles(); // 获取输出目录中的所有文件 // File[] classFiles = outputDir.listFiles(); // 获取输出目录中的所有文件
if (classFiles != null) { // if (classFiles != null) {
for (File classFile : classFiles) { // for (File classFile : classFiles) {
if (classFile.getName().endsWith(".class")) { // if (classFile.getName().endsWith(".class")) {
System.out.println("找到class文件 " + classFile.getName()); // System.out.println("找到class文件 " + classFile.getName());
//// 把.class文件存入oss中
// 把.class文件存入oss中 // }
// }
// }else {
// System.out.println("没有找到文件");
} // }
}
}else {
System.out.println("没有找到文件");
}
return Result.success(source); return Result.success(source);
} }

View File

@ -60,9 +60,9 @@ public class SourceCodeCompiler {
try { try {
//通过源文件获取到想要编译的java类源代码迭代器包括所有的内部类其中每一个类都是一个JavaFileObjects也被称为一个汇编单元 //通过源文件获取到想要编译的java类源代码迭代器包括所有的内部类其中每一个类都是一个JavaFileObjects也被称为一个汇编单元
Iterable<? extends JavaFileObject> javaFileObjects = fileManager.getJavaFileObjects(file); Iterable<? extends JavaFileObject> javaFileObjects = fileManager.getJavaFileObjects(file);
String[] strings = {"-classpath","home/","-verbose","-d", "home/"}; List<Object> 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(); task.call();
}catch (Exception e){ }catch (Exception e){