diff --git a/core/src/main/java/com/taobao/arthas/core/command/klass100/MemoryCompilerCommand.java b/core/src/main/java/com/taobao/arthas/core/command/klass100/MemoryCompilerCommand.java index 8e098af56..e0f6ae850 100644 --- a/core/src/main/java/com/taobao/arthas/core/command/klass100/MemoryCompilerCommand.java +++ b/core/src/main/java/com/taobao/arthas/core/command/klass100/MemoryCompilerCommand.java @@ -1,8 +1,6 @@ package com.taobao.arthas.core.command.klass100; import java.io.File; -import java.io.IOException; -import java.io.Writer; import java.lang.instrument.Instrumentation; import java.nio.charset.Charset; import java.util.List; @@ -89,22 +87,7 @@ public class MemoryCompilerCommand extends AnnotatedCommand { } } - DynamicCompiler dynamicCompiler = new DynamicCompiler(classloader, new Writer() { - @Override - public void write(char[] cbuf, int off, int len) throws IOException { - process.write(new String(cbuf, off, len)); - } - - @Override - public void flush() throws IOException { - } - - @Override - public void close() throws IOException { - - } - - }); + DynamicCompiler dynamicCompiler = new DynamicCompiler(classloader); Charset charset = Charset.defaultCharset(); if (encoding != null) { diff --git a/memorycompiler/src/main/java/com/taobao/arthas/compiler/DynamicCompiler.java b/memorycompiler/src/main/java/com/taobao/arthas/compiler/DynamicCompiler.java index 5ee4e8bed..61c9b012b 100644 --- a/memorycompiler/src/main/java/com/taobao/arthas/compiler/DynamicCompiler.java +++ b/memorycompiler/src/main/java/com/taobao/arthas/compiler/DynamicCompiler.java @@ -1,6 +1,5 @@ package com.taobao.arthas.compiler; -import java.io.Writer; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -25,18 +24,11 @@ public class DynamicCompiler { private final List> errors = new ArrayList>(); private final List> warnings = new ArrayList>(); - private Writer writer; - public DynamicCompiler(ClassLoader classLoader) { - this(classLoader, null); - } - - public DynamicCompiler(ClassLoader classLoader, Writer writer) { standardFileManager = javaCompiler.getStandardFileManager(null, null, null); options.add("-Xlint:unchecked"); dynamicClassLoader = new DynamicClassLoader(classLoader); - this.writer = writer; } public void addSource(String className, String source) { @@ -89,7 +81,7 @@ public class DynamicCompiler { return dynamicClassLoader.getClasses(); } catch (Throwable e) { - throw new DynamicCompilerException(e); + throw new DynamicCompilerException(e, errors); } finally { compilationUnits.clear(); @@ -139,7 +131,7 @@ public class DynamicCompiler { return dynamicClassLoader.getByteCodes(); } catch (ClassFormatError e) { - throw new DynamicCompilerException(e); + throw new DynamicCompilerException(e, errors); } finally { compilationUnits.clear(); diff --git a/memorycompiler/src/main/java/com/taobao/arthas/compiler/DynamicCompilerException.java b/memorycompiler/src/main/java/com/taobao/arthas/compiler/DynamicCompilerException.java index 9c623beec..0296ee227 100644 --- a/memorycompiler/src/main/java/com/taobao/arthas/compiler/DynamicCompilerException.java +++ b/memorycompiler/src/main/java/com/taobao/arthas/compiler/DynamicCompilerException.java @@ -33,8 +33,9 @@ public class DynamicCompilerException extends RuntimeException { this.diagnostics = diagnostics; } - public DynamicCompilerException(Throwable cause) { + public DynamicCompilerException(Throwable cause, List> diagnostics) { super(cause); + this.diagnostics = diagnostics; } private List> getErrorList() {