2017-09-20 7 views
2

나는 MethodEntryRequest을 만들고 있는데, 예를 들어 "java.*""sun.*"의 두 클래스 패턴의 메소드에만이 요청을 적용하려고합니다. 이를 위해 다음 코드를 작성했습니다.여러 클래스에 대해 JDI 적용 클래스 필터

MethodEntryRequest menr = mgr.createMethodEntryRequest(); 
menr.setSuspendPolicy(EventRequest.SUSPEND_ALL); 
menr.addClassFilter("java.*|sun.*"); 

위 코드의 문제점은 모든 메소드 이벤트를 사용할 수 없게한다는 것입니다. 그러나 하나의 클래스 패턴 메서드 만 적용하면 잘 작동합니다. "|""\\\\|" (으)로 이스케이프하려고했지만 작동하지 않았습니다. 그래서 하나 이상의 클래스 패턴에 클래스 필터를 적용하는 법을 알고 싶습니다.

+0

답변이 작동하지 않았습니다. 나는 당신이 예와 받아 들일 수있는 것을 이해하지 못했습니다. – rainyday

+0

"java. *"대신 "(java). *"를 시도했는데 둘 다 동일하지 않습니다 '()'이 (가) 어떤 문제를 일으키는 것 같습니다 – rainyday

+0

죄송합니다! 문서화 된대로 : _ 정규 표현식은' '*''로 시작하거나' '*''로 끝나는 정확한 일치 및 패턴으로 제한됩니다. . * .Foo "'또는''java. *"'._ –

답변

1

무언가 잘못되어 정상적인 자바 정규식이 작동하지 않는 것처럼 보입니다. 그래서 두 개의 MethodEntryRequests를 "sun. "과 "java."으로 하나씩 만들어 문제를 해결했습니다. 그러나 이것은 각 클래스 패턴에 대해 하나의 MethodEntryRequest가있을 때 가장 좋은 대답은 아닙니다.