本文整理汇总了Java中com.sun.jdi.ClassType.concreteMethodByName方法的典型用法代码示例。如果您正苦于以下问题:Java ClassType.concreteMethodByName方法的具体用法?Java ClassType.concreteMethodByName怎么用?Java ClassType.concreteMethodByName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.sun.jdi.ClassType
的用法示例。
在下文中一共展示了ClassType.concreteMethodByName方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: ungrabWindowAWT
import com.sun.jdi.ClassType; //导入方法依赖的package包/类
private boolean ungrabWindowAWT(ThreadReference tr, ObjectReference grabbedWindow) {
// Call XBaseWindow.ungrabInput()
try {
VirtualMachine vm = MirrorWrapper.virtualMachine(grabbedWindow);
List<ReferenceType> xbaseWindowClassesByName = VirtualMachineWrapper.classesByName(vm, "sun.awt.X11.XBaseWindow");
if (xbaseWindowClassesByName.isEmpty()) {
logger.info("Unable to release X grab, no XBaseWindow class in target VM "+VirtualMachineWrapper.description(vm));
return false;
}
ClassType XBaseWindowClass = (ClassType) xbaseWindowClassesByName.get(0);
Method ungrabInput = XBaseWindowClass.concreteMethodByName("ungrabInput", "()V");
if (ungrabInput == null) {
logger.info("Unable to release X grab, method ungrabInput not found in target VM "+VirtualMachineWrapper.description(vm));
return false;
}
XBaseWindowClass.invokeMethod(tr, ungrabInput, Collections.EMPTY_LIST, ObjectReference.INVOKE_SINGLE_THREADED);
} catch (VMDisconnectedExceptionWrapper vmdex) {
return true; // Disconnected, all is good.
} catch (Exception ex) {
logger.log(Level.INFO, "Unable to release X grab.", ex);
return false;
}
return true;
}
示例2: ungrabWindowFX
import com.sun.jdi.ClassType; //导入方法依赖的package包/类
private boolean ungrabWindowFX(ThreadReference tr) {
// javafx.stage.Window.impl_getWindows() - Iterator<Window>
// while (iterator.hasNext()) {
// Window w = iterator.next();
// ungrabWindowFX(w);
// }
try {
VirtualMachine vm = MirrorWrapper.virtualMachine(tr);
List<ReferenceType> windowClassesByName = VirtualMachineWrapper.classesByName(vm, "javafx.stage.Window");
if (windowClassesByName.isEmpty()) {
logger.info("Unable to release FX X grab, no javafx.stage.Window class in target VM "+VirtualMachineWrapper.description(vm));
return true; // We do not know whether there was any grab
}
ClassType WindowClass = (ClassType) windowClassesByName.get(0);
Method getWindowsMethod = WindowClass.concreteMethodByName("impl_getWindows", "()Ljava/util/Iterator;");
if (getWindowsMethod == null) {
logger.info("Unable to release FX X grab, no impl_getWindows() method in "+WindowClass);
return true; // We do not know whether there was any grab
}
ObjectReference windowsIterator = (ObjectReference) WindowClass.invokeMethod(tr, getWindowsMethod, Collections.EMPTY_LIST, ObjectReference.INVOKE_SINGLE_THREADED);
if (windowsIterator == null) {
return true; // We do not know whether there was any grab
}
InterfaceType IteratorClass = (InterfaceType) VirtualMachineWrapper.classesByName(vm, Iterator.class.getName()).get(0);
Method hasNext = IteratorClass.methodsByName("hasNext", "()Z").get(0);
Method next = IteratorClass.methodsByName("next", "()Ljava/lang/Object;").get(0);
while (hasNext(hasNext, tr, windowsIterator)) {
ObjectReference w = next(next, tr, windowsIterator);
ungrabWindowFX(WindowClass, w, tr);
}
} catch (VMDisconnectedExceptionWrapper vmdex) {
return true; // Disconnected, all is good.
} catch (Exception ex) {
logger.log(Level.INFO, "Unable to release FX X grab (if any).", ex);
return true; // We do not know whether there was any grab
}
return true;
}
示例3: retrieveScreenshots
import com.sun.jdi.ClassType; //导入方法依赖的package包/类
private static void retrieveScreenshots(JPDAThreadImpl t, final ThreadReference tr, VirtualMachine vm, DebuggerEngine engine, JPDADebuggerImpl d, final List<RemoteScreenshot> screenshots) throws RetrievalException {
try {
final ClassType windowClass = getClass(vm, tr, "javafx.stage.Window");
Method getWindows = windowClass.concreteMethodByName("impl_getWindows", "()Ljava/util/Iterator;");
Method windowName = windowClass.concreteMethodByName("impl_getMXWindowType", "()Ljava/lang/String;");
ObjectReference iterator = (ObjectReference)windowClass.invokeMethod(tr, getWindows, Collections.EMPTY_LIST, ObjectReference.INVOKE_SINGLE_THREADED);
ClassType iteratorClass = (ClassType)iterator.referenceType();
Method hasNext = iteratorClass.concreteMethodByName("hasNext", "()Z");
Method next = iteratorClass.concreteMethodByName("next", "()Ljava/lang/Object;");
boolean nextFlag = false;
do {
BooleanValue bv = (BooleanValue)iterator.invokeMethod(tr, hasNext, Collections.EMPTY_LIST, ObjectReference.INVOKE_SINGLE_THREADED);
nextFlag = bv.booleanValue();
if (nextFlag) {
ObjectReference window = (ObjectReference)iterator.invokeMethod(tr, next, Collections.EMPTY_LIST, ObjectReference.INVOKE_SINGLE_THREADED);
StringReference name = (StringReference)window.invokeMethod(tr, windowName, Collections.EMPTY_LIST, ObjectReference.INVOKE_SINGLE_THREADED);
SGComponentInfo windowInfo = new SGComponentInfo(t, window);
screenshots.add(createRemoteFXScreenshot(engine, vm, tr, name.value(), window, windowInfo));
}
} while (nextFlag);
} catch (Exception e) {
throw new RetrievalException(e.getMessage(), e);
}
}
示例4: pauseMedia
import com.sun.jdi.ClassType; //导入方法依赖的package包/类
private static void pauseMedia(ThreadReference tr, VirtualMachine vm) throws InvalidTypeException, ClassNotLoadedException, IncompatibleThreadStateException, InvocationException {
final ClassType audioClipClass = getClass(vm, tr, "com.sun.media.jfxmedia.AudioClip");
final ClassType mediaManagerClass = getClass(vm, tr, "com.sun.media.jfxmedia.MediaManager");
final InterfaceType mediaPlayerClass = getInterface(vm, tr, "com.sun.media.jfxmedia.MediaPlayer");
final ClassType playerStateEnum = getClass(vm, tr, "com.sun.media.jfxmedia.events.PlayerStateEvent$PlayerState");
if (audioClipClass != null) {
Method stopAllClips = audioClipClass.concreteMethodByName("stopAllClips", "()V");
audioClipClass.invokeMethod(tr, stopAllClips, Collections.EMPTY_LIST, ObjectReference.INVOKE_SINGLE_THREADED);
}
if (mediaManagerClass != null && mediaPlayerClass != null && playerStateEnum != null) {
Method getAllPlayers = mediaManagerClass.concreteMethodByName("getAllMediaPlayers", "()Ljava/util/List;");
ObjectReference plList = (ObjectReference)mediaManagerClass.invokeMethod(tr, getAllPlayers, Collections.EMPTY_LIST, ObjectReference.INVOKE_SINGLE_THREADED);
if (plList != null) {
ClassType listType = (ClassType)plList.referenceType();
Method iterator = listType.concreteMethodByName("iterator", "()Ljava/util/Iterator;");
ObjectReference plIter = (ObjectReference)plList.invokeMethod(tr, iterator, Collections.EMPTY_LIST, ObjectReference.INVOKE_SINGLE_THREADED);
ClassType iterType = (ClassType)plIter.referenceType();
Method hasNext = iterType.concreteMethodByName("hasNext", "()Z");
Method next = iterType.concreteMethodByName("next", "()Ljava/lang/Object;");
Field playingState = playerStateEnum.fieldByName("PLAYING");
Method getState = mediaPlayerClass.methodsByName("getState", "()Lcom/sun/media/jfxmedia/events/PlayerStateEvent$PlayerState;").get(0);
Method pausePlayer = mediaPlayerClass.methodsByName("pause", "()V").get(0);
boolean hasNextFlag = false;
do {
BooleanValue v = (BooleanValue)plIter.invokeMethod(tr, hasNext, Collections.EMPTY_LIST, ObjectReference.INVOKE_SINGLE_THREADED);
hasNextFlag = v.booleanValue();
if (hasNextFlag) {
ObjectReference player = (ObjectReference)plIter.invokeMethod(tr, next, Collections.EMPTY_LIST, ObjectReference.INVOKE_SINGLE_THREADED);
ObjectReference curState = (ObjectReference)player.invokeMethod(tr, getState, Collections.EMPTY_LIST, ObjectReference.INVOKE_SINGLE_THREADED);
if (playingState.equals(curState)) {
player.invokeMethod(tr, pausePlayer, Collections.EMPTY_LIST, ObjectReference.INVOKE_SINGLE_THREADED);
pausedPlayers.add(player);
}
}
} while (hasNextFlag);
}
}
}