Класс DirectExecutionControl
java.lang.Object
jdk.jshell.execution.DirectExecutionControl
- Все реализуемые интерфейсы:
-
AutoCloseable,ExecutionControl
- Прямые известные подклассы:
-
LocalExecutionControl,RemoteExecutionControl
public class DirectExecutionControl extends Object implements ExecutionControl
Реализация
ExecutionControl, выполняющаяся в текущем процессе. Может использоваться непосредственно или через канал с помощью Util.forwardExecutionControl(ExecutionControl, java.io.ObjectInput, java.io.ObjectOutput).- С:
- 9
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в интерфейсе jdk.jshell.spi.ExecutionControl
ExecutionControl.ClassBytecodes, ExecutionControl.ClassInstallException, ExecutionControl.EngineTerminationException, ExecutionControl.ExecutionControlException, ExecutionControl.InternalException, ExecutionControl.NotImplementedException, ExecutionControl.ResolutionException, ExecutionControl.RunException, ExecutionControl.StoppedException, ExecutionControl.UserException
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
DirectExecutionControl() |
Создаёт экземпляр, используя стандартную загрузку классов. |
DirectExecutionControl |
Создаёт экземпляр, делегируя операции загрузчика указанному делегату. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addToClasspath |
Добавляет путь к пути класса выполнения. |
protected void |
classesRedefined |
Уведомляет о том, что классы были переопределены. |
protected void |
clientCodeEnter() |
Помечает вход в пользовательский код. |
protected void |
clientCodeLeave() |
Помечает выход из пользовательского кода. |
void |
close() |
Завершает работу этого движка выполнения. |
Object |
extensionCommand |
Выполняет нестандартную команду (или стандартную команду из более новой версии). |
protected Class<?> |
findClass |
Находит класс с указанным двоичным именем. |
protected String |
invoke |
Вызывает указанный "doit-метод", статический метод без параметров. |
String |
invoke |
Вызывает исполняемый фрагмент кода, вызывая метод в указанном классе-обёртке. |
void |
load |
Попытка загрузить новые классы. |
void |
redefine |
Попытка переопределить ранее загруженные классы. |
void |
stop() |
Прерывает выполняемый вызов. |
protected String |
throwConvertedInvocationException |
Преобразует входящие исключения в пользовательском коде в экземпляры подклассов ExecutionControl.ExecutionControlException и выбрасывает преобразованное исключение. |
protected String |
throwConvertedOtherException |
Преобразует входящие исключения в коде агента в экземпляры подклассов ExecutionControl.ExecutionControlException и выбрасывает преобразованное исключение. |
protected static String |
valueString |
Преобразует значение Object из ExecutionControl.invoke(String, String) или ExecutionControl.varValue(String, String) в String. |
String |
varValue |
Возвращает значение переменной. |
Подробное описание конструкторов
DirectExecutionControl
public DirectExecutionControl(LoaderDelegate loaderDelegate)
Создаёт экземпляр, делегируя операции загрузки указанному делегату.
- Параметры:
-
loaderDelegate- делегат для обработки загрузки классов
DirectExecutionControl
public DirectExecutionControl()
Создаёт экземпляр, используя стандартную загрузку классов.
Подробное описание методов
load
public void load(ExecutionControl.ClassBytecodes[] cbcs) throws ExecutionControl.ClassInstallException, ExecutionControl.NotImplementedException, ExecutionControl.EngineTerminationException
Описание скопировано из интерфейса:
ExecutionControlПопытка загрузить новые классы.
- Определено в:
-
loadв интерфейсеExecutionControl - Параметры:
-
cbcs- имя класса и байткоды для загрузки - Исключения:
-
ExecutionControl.ClassInstallException- исключение, произошедшее при загрузке классов, некоторые или все не были загружены -
ExecutionControl.NotImplementedException- если не реализовано -
ExecutionControl.EngineTerminationException- движок выполнения завершился
redefine
public void redefine(ExecutionControl.ClassBytecodes[] cbcs) throws ExecutionControl.ClassInstallException, ExecutionControl.NotImplementedException, ExecutionControl.EngineTerminationException
Описание скопировано из интерфейса:
ExecutionControlПопытка переопределить ранее загруженные классы.
- Определено в:
-
redefineв интерфейсеExecutionControl - Параметры:
-
cbcs- имя класса и байткоды для переопределения - Исключения:
-
ExecutionControl.ClassInstallException- исключение, произошедшее при переопределении классов, некоторые или все не были переопределены -
ExecutionControl.NotImplementedException- если не реализовано -
ExecutionControl.EngineTerminationException- движок выполнения завершился
classesRedefined
protected void classesRedefined(ExecutionControl.ClassBytecodes[] cbcs) throws ExecutionControl.NotImplementedException, ExecutionControl.EngineTerminationException
Уведомление о том, что классы были переопределены.
- Параметры:
-
cbcs- имя класса и байткоды для переопределения - Исключения:
-
ExecutionControl.NotImplementedException- если не реализовано -
ExecutionControl.EngineTerminationException- движок выполнения завершился
invoke
public String invoke(String className, String methodName) throws ExecutionControl.RunException, ExecutionControl.InternalException, ExecutionControl.EngineTerminationException
Описание скопировано из интерфейса:
ExecutionControlВызывает исполняемый фрагмент кода, вызывая метод указанного обертывающего класса. Метод не должен принимать аргументы и возвращать String.
- Определено в:
-
invokeв интерфейсеExecutionControl - Параметры:
-
className- класс, метод которого должен быть вызван -
methodName- имя вызываемого метода - Возвращает:
- результат выполнения или null, если результат отсутствует
- Исключения:
-
ExecutionControl.UserException- вызов вызвал исключение пользователя -
ExecutionControl.ResolutionException- вызов попытался напрямую или косвенно вызвать неразрешённый фрагмент кода -
ExecutionControl.StoppedException- если выполнение было отменено вызовомExecutionControl.stop() -
ExecutionControl.InternalException- произошла внутренняя проблема -
ExecutionControl.EngineTerminationException- движок выполнения завершился ExecutionControl.RunException
varValue
public String varValue(String className, String varName) throws ExecutionControl.RunException, ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
Описание скопировано из интерфейса:
ExecutionControlВозвращает значение переменной.
- Определено в:
-
varValueв интерфейсеExecutionControl - Параметры:
-
className- имя обертывающего класса переменной -
varName- имя переменной - Возвращает:
- значение переменной
- Исключения:
-
ExecutionControl.UserException- форматирование значения вызвало исключение пользователя -
ExecutionControl.ResolutionException- форматирование значения попыталось напрямую или косвенно вызвать неразрешённый фрагмент кода -
ExecutionControl.StoppedException- если форматирование значения было отменено вызовомExecutionControl.stop() -
ExecutionControl.EngineTerminationException- движок выполнения завершился -
ExecutionControl.InternalException- произошла внутренняя проблема ExecutionControl.RunException
addToClasspath
public void addToClasspath(String cp) throws ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
Описание скопировано из интерфейса:
ExecutionControlДобавляет путь в путь выполнения класса.
- Определено в:
-
addToClasspathв интерфейсеExecutionControl - Параметры:
-
cp- путь для добавления - Исключения:
-
ExecutionControl.EngineTerminationException- движок выполнения завершился -
ExecutionControl.InternalException- произошла внутренняя проблема
stop
public void stop() throws ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
Прерывает выполняемый вызов.
Не поддерживается.
- Определено в:
-
stopв интерфейсеExecutionControl - Исключения:
-
ExecutionControl.EngineTerminationException- движок выполнения завершился -
ExecutionControl.InternalException- произошла внутренняя проблема
extensionCommand
public Object extensionCommand(String command, Object arg) throws ExecutionControl.RunException, ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
Описание скопировано из интерфейса:
ExecutionControlВыполняет нестандартную команду (или стандартную команду из более новой версии).
- Определено в:
-
extensionCommandв интерфейсеExecutionControl - Параметры:
-
command- нестандартная команда -
arg- аргумент команды - Возвращает:
- значение возврата команды
- Исключения:
-
ExecutionControl.UserException- команда вызвала исключение пользователя -
ExecutionControl.ResolutionException- команда попыталась напрямую или косвенно вызвать неразрешённый фрагмент кода -
ExecutionControl.StoppedException- если команда была отменена вызовомExecutionControl.stop() -
ExecutionControl.EngineTerminationException- движок выполнения завершился -
ExecutionControl.NotImplementedException- если не реализовано -
ExecutionControl.InternalException- произошла внутренняя проблема ExecutionControl.RunException
close
public void close()
Описание скопировано из интерфейса:
ExecutionControlЗавершает работу этого движка выполнения. Реализация должна освободить все ресурсы, удерживаемые этим движком выполнения.
После close не следует делать вызовы методов этого интерфейса.
- Определено в:
-
closeв интерфейсеAutoCloseable - Определено в:
-
closeв интерфейсеExecutionControl
findClass
protected Class<?> findClass(String name) throws ClassNotFoundException
Находит класс с указанным бинарным именем.
- Параметры:
-
name- бинарное имя класса - Возвращает:
- объект Class
- Исключения:
-
ClassNotFoundException- если класс не был найден
invoke
protected String invoke(Method doitMethod) throws Exception
Вызывает указанный метод "doit-method", статический метод без параметров.
invoke(java.lang.String, java.lang.String) в этом классе будет вызывать это для вызова.- Параметры:
-
doitMethod- вызываемый метод - Возвращает:
- значение или null
- Исключения:
-
Exception- любые исключения, сгенерированные вызовомMethod.invoke(Object, Object...)или любые исключенияExecutionControl.ExecutionControlExceptionдля передачи.
valueString
protected static String valueString(Object value)
Преобразует значение
Object из ExecutionControl.invoke(String, String) или ExecutionControl.varValue(String, String) в строковое представление.- Параметры:
-
value- значение для преобразования - Возвращает:
- строковое представление
throwConvertedInvocationException
protected String throwConvertedInvocationException(Throwable cause) throws ExecutionControl.RunException, ExecutionControl.InternalException
Преобразует входящие исключения в пользовательском коде в экземпляры подтипов
ExecutionControl.ExecutionControlException и выбрасывает преобразованное исключение.- Параметры:
-
cause- исключение для преобразования - Возвращает:
- никогда не возвращает, так как всегда выбрасывает
- Исключения:
-
ExecutionControl.RunException- для обычных случаев возникновения исключения -
ExecutionControl.InternalException- для внутренних проблем
throwConvertedOtherException
protected String throwConvertedOtherException(Throwable ex) throws ExecutionControl.RunException, ExecutionControl.InternalException
Преобразует входящие исключения в коде агента в экземпляры подтипов
ExecutionControl.ExecutionControlException и выбрасывает преобразованное исключение.- Параметры:
-
ex- исключение для преобразования - Возвращает:
- никогда не возвращает, так как всегда выбрасывает
- Исключения:
-
ExecutionControl.RunException- для обычных случаев возникновения исключения -
ExecutionControl.InternalException- для внутренних проблем
clientCodeEnter
protected void clientCodeEnter() throws ExecutionControl.InternalException
Помечает вход в пользовательский код.
- Исключения:
-
ExecutionControl.InternalException- в случаях неожиданных сбоев
clientCodeLeave
protected void clientCodeLeave() throws ExecutionControl.InternalException
Помечает выход из пользовательского кода.
- Исключения:
-
ExecutionControl.InternalException- в случаях неожиданных сбоев
© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/jdk.jshell/jdk/jshell/execution/DirectExecutionControl.html