Spec-Zone.ru › OpenJDK 25

Интерфейс 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 — если invoke() был отменён вызовом 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 имеет неверный формат

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её дочерних компаний в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

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

Spec-Zone.ru

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