- java.lang.Object
-
- jdk.jshell.execution.StreamingExecutionControl
-
- jdk.jshell.execution.JdiExecutionControl
-
- All Implemented Interfaces:
-
AutoCloseable
,ExecutionControl
- 已知直接子类:
-
JdiDefaultExecutionControl
public abstract class JdiExecutionControl extends StreamingExecutionControl implements ExecutionControl
摘要JDI实现ExecutionControl
。- 从以下版本开始:
- 9
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface jdk.jshell.spi.ExecutionControl
ExecutionControl.ClassBytecodes, ExecutionControl.ClassInstallException, ExecutionControl.EngineTerminationException, ExecutionControl.ExecutionControlException, ExecutionControl.InternalException, ExecutionControl.NotImplementedException, ExecutionControl.ResolutionException, ExecutionControl.RunException, ExecutionControl.StoppedException, ExecutionControl.UserException
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
JdiExecutionControl(ObjectOutput out, ObjectInput in)
创建一个实例。
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 void
redefine(ExecutionControl.ClassBytecodes[] cbcs)
重新定义指定的类。protected ReferenceType
referenceType(VirtualMachine vm, String name)
返回对应于指定类名的JDIReferenceType
。protected abstract VirtualMachine
vm()
返回JDIVirtualMachine
实例。-
Methods inherited from interface jdk.jshell.spi.ExecutionControl
addToClasspath, close, extensionCommand, generate, generate, invoke, load, stop, varValue
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from class jdk.jshell.execution.StreamingExecutionControl
addToClasspath, close, extensionCommand, invoke, load, stop, varValue
-
-
-
-
构造方法详细信息
-
JdiExecutionControl
protected JdiExecutionControl(ObjectOutput out, ObjectInput in)
创建一个实例。- 参数
-
out
- 远程代理的输出 -
in
- 远程代理的输入
-
-
方法详细信息
-
vm
protected abstract VirtualMachine vm() throws ExecutionControl.EngineTerminationException
返回JDIVirtualMachine
实例。- 结果
- 虚拟机
- 异常
-
ExecutionControl.EngineTerminationException
- 如果虚拟机死机/断开连接
-
redefine
public void redefine(ExecutionControl.ClassBytecodes[] cbcs) throws ExecutionControl.ClassInstallException, ExecutionControl.EngineTerminationException
重新定义指定的类。 在“重定义”中,像JDI和JVMTI一样,对类进行就地替换(保留类标识) - 即对类的现有引用不需要重新编译。 此实现使用JDIVirtualMachine.redefineClasses(java.util.Map)
。 如果类的签名已经改变(参见JDI规范)将不成功。 JShell核心旨在适应不成功的重新定义。- Specified by:
-
redefine
在接口ExecutionControl
- 重写:
-
redefine
在StreamingExecutionControl
- 参数
-
cbcs
- 重新定义的类名和字节码 - 异常
-
ExecutionControl.ClassInstallException
- 异常重新定义类,有些或全部没有被重新定义 -
ExecutionControl.EngineTerminationException
- 执行引擎已经终止
-
referenceType
protected ReferenceType referenceType(VirtualMachine vm, String name)
返回对应于指定类名的JDIReferenceType
。- 参数
-
vm
- 现在的JDIVirtualMachine
,由vm()
返回 -
name
- 查询的类名 - 结果
-
相应的
ReferenceType
-
-