Spec-Zone.ru › OpenJDK 21

Интерфейс 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, 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/spi/ExecutionControl.html

Spec-Zone.ru

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