Класс 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 | Модификатор и тип | Интерфейс | Описание |
|---|---|---|
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 |
Исключение, указывающее, что ExecutionControl.invoke(java.lang.String, java.lang.String) (или, теоретически, ExecutionControl.varValue(java.lang.String, java.lang.String)) было прервано вызовом ExecutionControl.stop(). |
static class |
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 |
Возвращает значение переменной. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли другой объект этому объекту. |
protected void |
finalize() |
Устарело, подлежит удалению: этот элемент API может быть удалён в будущей версии. Финализация признана устаревшей и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного периода реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного периода реального времени. |
Подробное описание конструкторов
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— вызываемый метод - Возвращает:
- значение или 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.