Spec-Zone.ru › OpenJDK 17

Интерфейс ExecutionControl

Все суперинтерфейсы:
AutoCloseable
Все известные реализующие классы:
DirectExecutionControl, JdiDefaultExecutionControl, JdiExecutionControl, LocalExecutionControl, RemoteExecutionControl, StreamingExecutionControl
public interface ExecutionControl extends AutoCloseable
Этот интерфейс определяет функциональность, которая должна быть обеспечена для реализации подключаемого модуля JShell execution engine.

Аудитория этого интерфейса поставщика сервиса — инженеры, желающие реализовать собственную версию execution engine для поддержки API JShell.

Сниппет компилируется в код, заключенный в «оберточный класс». Execution engine используется основной реализацией JShell для загрузки и, в случае исполняемых Сниппетов, выполнения Сниппета.

Методы, определенные в этом интерфейсе, должны вызываться только основной реализацией JShell.

С момента:
9

Краткое описание вложенных классов

Модификатор и тип Интерфейс Описание
static final class  ExecutionControl.ClassBytecodes
Объединяет имя класса с байт-кодами класса.
static class  ExecutionControl.ClassInstallException
Класс установки (загрузки или переопределения) столкнулся с проблемой.
static class  ExecutionControl.EngineTerminationException
Произошло непредвиденное завершение работы execution engine.
static class  ExecutionControl.ExecutionControlException
Абстрактный базовый класс всех исключений ExecutionControl.
static class  ExecutionControl.InternalException
Возникла внутренняя проблема.
static class  ExecutionControl.NotImplementedException
Команда не реализована.
static class  ExecutionControl.ResolutionException
Исключение, указывающее на то, что встречен DeclarationSnippet с неразрешенными ссылками.
static class  ExecutionControl.RunException
Абстрактный базовый класс исключений, специфичных для выполнения пользовательского кода.
static class  ExecutionControl.StoppedException
Исключение, указывающее, что вызов invoke(java.lang.String, java.lang.String) (или теоретически varValue(java.lang.String, java.lang.String)) был прерван вызовом stop().
static class  ExecutionControl.UserException
Произошло обычное пользовательское исключение.

Краткое описание методов

Модификатор и тип Метод Описание
void addToClasspath(String path)
Добавляет путь в путь класса выполнения.
void close()
Закрывает execution engine.
Object extensionCommand(String command, Object arg)
Выполняет нестандартную команду (или стандартную команду из более новой версии).
static ExecutionControl generate(ExecutionEnv env, String spec)
Ищет провайдера, затем создает и возвращает экземпляр ExecutionControl.
static ExecutionControl generate(ExecutionEnv env, String name, Map<String,String> parameters)
Ищет провайдера, затем создает и возвращает экземпляр ExecutionControl.
String invoke(String className, String methodName)
Выполняет исполняемый Сниппет, вызывая метод в указанном оберточном классе.
void load(ExecutionControl.ClassBytecodes[] cbcs)
Попытка загрузить новые классы.
void redefine(ExecutionControl.ClassBytecodes[] cbcs)
Попытка переопределить ранее загруженные классы.
void stop()
Прерывает запущенный вызов.
String varValue(String className, String varName)
Возвращает значение переменной.

Подробности методов

load

void load(ExecutionControl.ClassBytecodes[] cbcs) throws ExecutionControl.ClassInstallException, ExecutionControl.NotImplementedException, ExecutionControl.EngineTerminationException
Попытка загрузить новые классы.
Параметры:
cbcs - имя класса и байткоды для загрузки
Исключения:
ExecutionControl.ClassInstallException - возникла ошибка при загрузке классов, некоторые или все классы не были загружены
ExecutionControl.NotImplementedException - если не реализовано
ExecutionControl.EngineTerminationException - движок выполнения завершен

redefine

void redefine(ExecutionControl.ClassBytecodes[] cbcs) throws ExecutionControl.ClassInstallException, ExecutionControl.NotImplementedException, ExecutionControl.EngineTerminationException
Попытка переопределить ранее загруженные классы.
Параметры:
cbcs - имя класса и байткоды для переопределения
Исключения:
ExecutionControl.ClassInstallException - возникла ошибка при переопределении классов, некоторые или все классы не были переопределены
ExecutionControl.NotImplementedException - если не реализовано
ExecutionControl.EngineTerminationException - движок выполнения завершен

invoke

String invoke(String className, String methodName) throws ExecutionControl.RunException, ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
Вызывает исполняемый фрагмент кода, вызывая метод указанного оберточного класса. Метод не должен принимать аргументов и должен возвращать String.
Параметры:
className - класс, метод которого должен быть вызван
methodName - имя вызываемого метода
Возвращаемое значение:
результат выполнения или null, если результат отсутствует
Исключения:
ExecutionControl.UserException - вызов вызвал исключение пользователя
ExecutionControl.ResolutionException - вызов пытался напрямую или косвенно вызвать неразрешенный фрагмент кода
ExecutionControl.StoppedException - если вызов был отменён методом stop()
ExecutionControl.EngineTerminationException - движок выполнения завершен
ExecutionControl.InternalException - произошла внутренняя ошибка
ExecutionControl.RunException

varValue

String varValue(String className, String varName) throws ExecutionControl.RunException, ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
Возвращает значение переменной.
Параметры:
className - имя оберточного класса переменной
varName - имя переменной
Возвращаемое значение:
значение переменной
Исключения:
ExecutionControl.UserException - форматирование значения вызвало исключение пользователя
ExecutionControl.ResolutionException - форматирование значения пыталось напрямую или косвенно вызвать неразрешенный фрагмент кода
ExecutionControl.StoppedException - если форматирование значения было отменено методом stop()
ExecutionControl.EngineTerminationException - движок выполнения завершен
ExecutionControl.InternalException - произошла внутренняя ошибка
ExecutionControl.RunException

addToClasspath

void addToClasspath(String path) throws ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
Добавляет путь к пути выполнения класса.
Параметры:
path - путь для добавления
Исключения:
ExecutionControl.EngineTerminationException - движок выполнения завершен
ExecutionControl.InternalException - произошла внутренняя ошибка

stop

void stop() throws ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
Прерывает запущенный вызов.
Исключения:
ExecutionControl.EngineTerminationException - движок выполнения завершен
ExecutionControl.InternalException - произошла внутренняя ошибка

extensionCommand

Object extensionCommand(String command, Object arg) throws ExecutionControl.RunException, ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
Выполняет нестандартную команду (или стандартную команду из более новой версии).
Параметры:
command - нестандартная команда
arg - аргументы команды
Возвращаемое значение:
результат выполнения команды
Исключения:
ExecutionControl.UserException - команда вызвала исключение пользователя
ExecutionControl.ResolutionException - команда пыталась напрямую или косвенно вызвать неразрешенный фрагмент кода
ExecutionControl.StoppedException - если команда была отменена методом stop()
ExecutionControl.EngineTerminationException - движок выполнения завершен
ExecutionControl.NotImplementedException - если не реализовано
ExecutionControl.InternalException - произошла внутренняя ошибка
ExecutionControl.RunException

close

void close()
Закрывает движок выполнения. Реализация должна освободить все ресурсы, используемые этим движком выполнения.

После вызова close, вызовы методов этого интерфейса не должны выполняться.

Определено в:
close в интерфейсе AutoCloseable

generate

static ExecutionControl generate(ExecutionEnv env, String name, Map<String,String> parameters) throws Throwable
Поиск провайдера, затем создание и возврат экземпляра ExecutionControl.
Параметры:
env - среда выполнения (предоставляется JShell)
name - имя провайдера
parameters - карта параметров.
Возвращаемое значение:
движок выполнения
Исключения:
Throwable - исключение, возникшее при попытке найти или создать движок выполнения.
IllegalArgumentException - если ни один ExecutionControlProvider не имеет указанного name и parameters.

generate

static ExecutionControl generate(ExecutionEnv env, String spec) throws Throwable
Поиск провайдера, затем создание и возврат экземпляра ExecutionControl.
Параметры:
env - среда выполнения (предоставляется JShell)
spec - спецификация ExecutionControl, описание которой приведено в документации пакета документация пакета.
Возвращаемое значение:
движок выполнения
Исключения:
Throwable - исключение, возникшее при попытке найти или создать движок выполнения.
IllegalArgumentException - если ни один ExecutionControlProvider не имеет указанного name и parameters.
IllegalArgumentException - если spec имеет неправильный формат

© 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/spi/ExecutionControl.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API