Spec-Zone.ru › OpenJDK 24

Интерфейс ExecutionControl

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

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

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

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

С:
9

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

Модификатор и тип Интерфейс Описание
static final class  ExecutionControl.ClassBytecodes
Объединяет имя класса с байткодами класса.
static class  ExecutionControl.ClassInstallException
Произошла ошибка при установке (загрузке или переопределении) класса.
static class  ExecutionControl.EngineTerminationException
Произошло непредвиденное завершение работы движка выполнения.
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()
Завершает работу этого движка выполнения.
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, 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://download.java.net/java/early_access/jdk24/docs/api/jdk.jshell/jdk/jshell/spi/ExecutionControl.html

Spec-Zone.ru

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