Looly 5 年之前
父节点
当前提交
2f7cd18895
共有 1 个文件被更改,包括 10 次插入6 次删除
  1. 10 6
      hutool-core/src/main/java/cn/hutool/core/compiler/JavaSourceCompiler.java

+ 10 - 6
hutool-core/src/main/java/cn/hutool/core/compiler/JavaSourceCompiler.java

@@ -1,6 +1,7 @@
 package cn.hutool.core.compiler;
 
 import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.CharsetUtil;
@@ -159,13 +160,16 @@ public class JavaSourceCompiler {
 		final DiagnosticCollector<? super JavaFileObject> diagnosticCollector = new DiagnosticCollector<>();
 		final List<JavaFileObject> javaFileObjectList = getJavaFileObject();
 		final CompilationTask task = CompilerUtil.getTask(javaFileManager, diagnosticCollector, options, javaFileObjectList);
-		if (task.call()) {
-			// 加载编译后的类
-			return javaFileManager.getClassLoader(StandardLocation.CLASS_OUTPUT);
-		} else {
-			// 编译失败,收集错误信息
-			throw new CompilerException(DiagnosticUtil.getMessages(diagnosticCollector));
+		try{
+			if (task.call()) {
+				// 加载编译后的类
+				return javaFileManager.getClassLoader(StandardLocation.CLASS_OUTPUT);
+			}
+		} finally {
+			IoUtil.close(javaFileManager);
 		}
+		//编译失败,收集错误信息
+		throw new CompilerException(DiagnosticUtil.getMessages(diagnosticCollector));
 	}
 
 	/**