diff --git a/core/src/main/java/com/taobao/arthas/core/command/klass100/JadCommand.java b/core/src/main/java/com/taobao/arthas/core/command/klass100/JadCommand.java index 3429fa7ad..cc8253471 100644 --- a/core/src/main/java/com/taobao/arthas/core/command/klass100/JadCommand.java +++ b/core/src/main/java/com/taobao/arthas/core/command/klass100/JadCommand.java @@ -6,7 +6,6 @@ import com.taobao.arthas.core.shell.command.AnnotatedCommand; import com.taobao.arthas.core.shell.command.CommandProcess; import com.taobao.arthas.core.util.ClassUtils; import com.taobao.arthas.core.util.Decompiler; -import com.taobao.arthas.core.util.FileUtils; import com.taobao.arthas.core.util.LogUtil; import com.taobao.arthas.core.util.SearchUtils; import com.taobao.arthas.core.util.TypeRenderUtils; @@ -24,13 +23,9 @@ import com.taobao.text.ui.Element; import com.taobao.text.ui.LabelElement; import com.taobao.text.ui.TableElement; import com.taobao.text.util.RenderUtil; -import org.benf.cfr.reader.Main; -import org.objectweb.asm.Type; import java.io.File; -import java.io.IOException; import java.lang.instrument.Instrumentation; -import java.nio.charset.Charset; import java.util.*; import java.util.regex.Pattern; @@ -38,6 +33,7 @@ import static com.taobao.text.ui.Element.label; /** * @author diecui1202 on 15/11/24. + * @author hengyunabc 2018-11-16 */ @Name("jad") @Summary("Decompile class") @@ -49,9 +45,6 @@ import static com.taobao.text.ui.Element.label; public class JadCommand extends AnnotatedCommand { private static final Logger logger = LogUtil.getArthasLogger(); private static Pattern pattern = Pattern.compile("(?m)^/\\*\\s*\\*/\\s*$" + System.getProperty("line.separator")); - private static final String OUTPUTOPTION = "--outputdir"; - private static final String COMMENTS = "--comments"; - private static final String DecompilePath = new File(LogUtil.LOGGER_FILE).getParent() + File.separator + "decompile"; private String classPattern; private String methodName; @@ -95,8 +88,8 @@ public class JadCommand extends AnnotatedCommand { } else if (matchedClasses.size() > 1) { processMatches(process, matchedClasses); } else { // matchedClasses size is 1 - // find inner classes. TODO slow - Set> withInnerClasses = SearchUtils.searchClassOnly(inst, matchedClasses.iterator().next().getName() + "(?!.*\\$\\$Lambda\\$).*", true, code); + // find inner classes. + Set> withInnerClasses = SearchUtils.searchClassOnly(inst, matchedClasses.iterator().next().getName() + "$*", false, code); if(withInnerClasses.isEmpty()) { withInnerClasses = matchedClasses; } @@ -119,8 +112,7 @@ public class JadCommand extends AnnotatedCommand { Map, File> classFiles = transformer.getDumpResult(); File classFile = classFiles.get(c); - String source; - source = Decompiler.decompile(classFile.getAbsolutePath(), methodName); + String source = Decompiler.decompile(classFile.getAbsolutePath(), methodName); if (source != null) { source = pattern.matcher(source).replaceAll(""); } else { @@ -164,21 +156,4 @@ public class JadCommand extends AnnotatedCommand { process.write("No class found for: " + classPattern + "\n"); } - public static void main(String[] args) { - String[] names = { - "com.taobao.container.web.arthas.mvc.AppInfoController", - "com.taobao.container.web.arthas.mvc.AppInfoController$1$$Lambda$19/381016128", - "com.taobao.container.web.arthas.mvc.AppInfoController$$Lambda$16/17741163", - "com.taobao.container.web.arthas.mvc.AppInfoController$1", - "com.taobao.container.web.arthas.mvc.AppInfoController$123", - "com.taobao.container.web.arthas.mvc.AppInfoController$A", - "com.taobao.container.web.arthas.mvc.AppInfoController$ABC" - }; - - String pattern = "com.taobao.container.web.arthas.mvc.AppInfoController" + "(?!.*\\$\\$Lambda\\$).*"; - for(String name : names) { - System.out.println(name + " " + Pattern.matches(pattern, name)); - } - - } }