2017-09-20 2 views
2

Ich erstelle eine MethodEntryRequest, und ich möchte diese Anfrage nur Methoden von zwei Klassenmuster für ex anwenden: - "java.*" und "sun.*". Dafür hatte ich folgenden Code geschrieben.JDI wenden Klassenfilter für mehrere Klassen an

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

Das Problem mit dem obigen Code ist es deaktiviert alle Methoden Ereignisse. Aber wenn ich nur eine Klassenmustermethode anwende, funktioniert es gut. Ich habe versucht, "|" mit "\\\\|" zu entkommen, aber es hat nicht funktioniert. Also möchte ich wissen, wie man Klassenfilter für mehr als ein Klassenmuster anwendet?

+0

Ihre Antwort hat nicht funktioniert. Ich habe nicht verstanden, was du mit Beispielen und Akzeptablen meintest. – rainyday

+0

Ich versuchte "(Java). *" Anstelle von "Java. *" Und fand heraus, beide sind nicht gleich '()' verursacht ein Problem – rainyday

+0

Hoppla! Wie dokumentiert: _Reguläre Ausdrücke sind auf exakte Übereinstimmungen und Muster beschränkt, die mit "*" beginnen oder mit "*" enden; zum Beispiel, '" * .Foo "' oder '" java. * "' ._ –

Antwort

1

Sieht aus, als ob etwas falsch ist und normale Java-Regex nicht funktionieren. Also habe ich mein Problem gelöst, indem ich zwei MethodEntryRequests für "sun. " und einen für "java." gemacht habe. Aber das ist nicht die beste Antwort, da für jedes Klassenmuster ein MethodEntryRequest existiert.

Verwandte Themen