0
Javassist를 사용하여 간단한 계측 에이전트를 작성하려고합니다. java.lang.invoke.MethodHandleImpl는 자바에서 발견/랭/호출 : 자바/랭// MethodHandleImpl를 호출을 찾을 수 없습니다 :classPool.get (className) throws RuntimeException 클래스를 찾을 수 없습니다.
java.lang.RuntimeException가 :
public class Agent implements ClassFileTransformer { protected Instrumentation instrumentation; protected ClassPool classPool; public Agent(Instrumentation instrumentation){ this.instrumentation = instrumentation; this.classPool = ClassPool.getDefault(); this.instrumentation.addTransformer(this); } public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException { try { System.out.printf("%s.transform: %s\n", this.getClass().getCanonicalName(), className); classPool.insertClassPath(new ByteArrayClassPath(className, classfileBuffer)); CtClass ctClass = classPool.get(className); /* <- throws error */ } catch (Exception ex){ System.out.println(ex); return null; } } }
는하지만 다음과 같은 오류를 얻을 수 /MethodHandleImpl.class
이 예외가 발생하지 않는 유일한 클래스는 IDE (인 IntelliJ의 IDEA)에서 내 프로젝트의 하나입니다.
클래스 경로에서 수동으로 경로를 추가하려고했지만 그 중 하나도 도움이되지 않았습니다. 즉
String[] cpEntries = System.getProperty("java.class.path").split(File.pathSeparator);
for (String cpEntry : classpathEntries)
classPool.insertClassPath(cpEntry);
무엇이 누락 되었습니까? 감사!