Класс 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-method", статический метод без параметров. |
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в интерфейсеAutoCloseable - Определено в:
-
closeв интерфейсеExecutionControl
findClass
protected Class<?> findClass(String name) throws ClassNotFoundException
Находит класс с указанным двоичным именем.
- Параметры:
-
name- двоичное имя класса - Возвращает:
- объект Class
- Исключения:
-
ClassNotFoundException- если класс не был найден
invoke
protected String invoke(Method doitMethod) throws Exception
Вызывает указанный метод "doit", статический метод без параметров. Метод
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) в String.- Параметры:
-
value- значение для преобразования - Возвращает:
- представление в формате
String
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
Помечает вход в пользовательский код.
- Throws:
-
ExecutionControl.InternalException- в неожиданных случаях сбоя
clientCodeLeave
protected void clientCodeLeave() throws ExecutionControl.InternalException
Помечает выход из пользовательского кода.
- Throws:
-
ExecutionControl.InternalException- в неожиданных случаях сбоя
© 1993, 2023, 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/21/docs/api/jdk.jshell/jdk/jshell/execution/DirectExecutionControl.html