Класс 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
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в интерфейсе 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 |
Вызывает исполняемый фрагмент Snippet, обращаясь к методу указанного класса-оболочки. |
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Вызывает исполняемый фрагмент Snippet, обращаясь к методу указанного класса-оболочки. Метод должен принимать ноль аргументов и возвращать String.
- Определено в:
-
invokeв интерфейсеExecutionControl - Параметры:
-
className— класс, метод которого следует вызвать -
methodName— имя вызываемого метода - Возвращает:
- результат выполнения или null, если результата нет
- Исключения:
-
ExecutionControl.UserException— вызов привел к пользовательскому исключению -
ExecutionControl.ResolutionException— вызов попытался прямо или косвенно вызвать неразрешенный фрагмент -
ExecutionControl.StoppedException— еслиinvoke()был отменен вызовом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» — статический метод без параметров. Метод
invoke(java.lang.String, java.lang.String) этого класса вызывает его для выполнения.- Параметры:
-
doitMethod— вызываемый объект Method - Возвращает:
- значение или 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
Отмечает начало выполнения пользовательского кода.
- Исключения:
-
ExecutionControl.InternalException— в случае непредвиденного сбоя
clientCodeLeave
protected void clientCodeLeave() throws ExecutionControl.InternalException
Отмечает завершение выполнения пользовательского кода.
- Исключения:
-
ExecutionControl.InternalException— в случае непредвиденного сбоя
© 1993, 2025, 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/25/docs/api/jdk.jshell/jdk/jshell/execution/DirectExecutionControl.html