java.lang.Object
jdk.jshell.execution.DirectExecutionControl
jdk.jshell.execution.RemoteExecutionControl
- 所有已实现的接口:
-
AutoCloseable
,ExecutionControl
远程代理在执行过程中运行(与主JShell进程分开)。该代理通过套接字从主JShell进程加载代码,执行代码和其他杂项,是
DirectExecutionControl
的特化,增加了由外部进程控制的停止支持。设计用于与JdiDefaultExecutionControl
一起使用。
- 自JDK版本:
- 9
-
Nested Class Summary
Nested classes/interfaces declared in 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
-
Constructor Summary
ConstructorDescription使用默认类加载创建一个实例。RemoteExecutionControl
(LoaderDelegate loaderDelegate) 创建一个实例,将加载操作委托给指定的代理。 -
Method Summary
Modifier and TypeMethodDescriptionprotected void
标记进入用户代码。static void
启动代理,连接到命令行参数中指定的套接字上的JShell核心。void
在远程端重新定义处理仅用于注册重新定义的类void
stop()
中断正在运行的调用。返回变量的值。Methods declared in class jdk.jshell.execution.DirectExecutionControl
addToClasspath, classesRedefined, clientCodeLeave, close, extensionCommand, findClass, invoke, invoke, load, stop, throwConvertedInvocationException, throwConvertedOtherException, valueString
Methods declared in class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods declared in interface jdk.jshell.spi.ExecutionControl
addToClasspath, close, extensionCommand, invoke, load
-
Constructor Details
-
RemoteExecutionControl
创建一个实例,将加载操作委托给指定的代理。- 参数:
-
loaderDelegate
- 处理加载类的代理
-
RemoteExecutionControl
public RemoteExecutionControl()使用默认类加载创建一个实例。
-
-
Method Details
-
main
启动代理,连接到命令行参数中指定的套接字上的JShell核心。- 参数:
-
args
- 标准命令行参数,期望套接字号是唯一的参数 - 抛出:
-
Exception
- 任何意外异常
-
redefine
public void redefine(ExecutionControl.ClassBytecodes[] cbcs) throws ExecutionControl.ClassInstallException, ExecutionControl.NotImplementedException, ExecutionControl.EngineTerminationException 在远程端重新定义处理仅用于注册重新定义的类- 指定者:
-
redefine
在接口ExecutionControl
中 - 参数:
-
cbcs
- 要重新定义的类名和字节码 - 抛出:
-
ExecutionControl.ClassInstallException
- 重新定义类时发生异常,一些或全部未被重新定义 -
ExecutionControl.NotImplementedException
- 如果未实现 -
ExecutionControl.EngineTerminationException
- 执行引擎已终止
-
stop
public void stop() throws ExecutionControl.EngineTerminationException, ExecutionControl.InternalException从类中复制的描述:DirectExecutionControl
中断正在运行的调用。不支持。
- 指定者:
-
stop
在接口ExecutionControl
中 - 覆盖:
-
stop
在类DirectExecutionControl
中 - 抛出:
-
ExecutionControl.EngineTerminationException
- 执行引擎已终止 -
ExecutionControl.InternalException
- 发生内部问题
-
varValue
public String varValue(String className, String varName) throws ExecutionControl.RunException, ExecutionControl.EngineTerminationException, ExecutionControl.InternalException 从接口中复制的描述:ExecutionControl
返回变量的值。- 指定者:
-
varValue
在接口ExecutionControl
中 - 覆盖:
-
varValue
在类DirectExecutionControl
中 - 参数:
-
className
- 变量的包装类的名称 -
varName
- 变量的名称 - 返回:
- 变量的值
- 抛出:
-
ExecutionControl.UserException
- 格式化值引发用户异常 -
ExecutionControl.ResolutionException
- 格式化值尝试直接或间接调用未解析的片段 -
ExecutionControl.StoppedException
- 如果值的格式化被ExecutionControl.stop()
取消 -
ExecutionControl.EngineTerminationException
- 执行引擎已终止 -
ExecutionControl.InternalException
- 发生内部问题 -
ExecutionControl.RunException
-
clientCodeEnter
protected void clientCodeEnter()从类中复制的描述:DirectExecutionControl
标记进入用户代码。
-