Класс 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
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в интерфейсе jdk.jshell.spi.ExecutionControl
ExecutionControl.ClassBytecodes, ExecutionControl.ClassInstallException, ExecutionControl.EngineTerminationException, ExecutionControl.ExecutionControlException, ExecutionControl.InternalException, ExecutionControl.NotImplementedException, ExecutionControl.ResolutionException, ExecutionControl.RunException, ExecutionControl.StoppedException, 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 |
Вызывает исполняемый фрагмент, вызывая метод в указанном классе-обёртке. |
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 |
Возвращает значение переменной. |
Подробное описание конструкторов
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Вызывает исполняемый фрагмент кода, вызывая метод в указанном классе-обёртке. Метод не должен принимать аргументы и возвращать String.
- Определено в:
-
invokeв интерфейсеExecutionControl - Параметры:
-
className- класс, метод которого должен быть вызван -
methodName- имя вызываемого метода - Возвращает:
- результат выполнения или null, если результата нет
- Исключения:
-
ExecutionControl.UserException- вызов вызвал исключение пользователя -
ExecutionControl.ResolutionException- вызов попытался напрямую или косвенно вызвать неразрешённый фрагмент кода -
ExecutionControl.StoppedException- если вызов был отменён методом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в интерфейсеAutoCloseable - Определено в:
-
closeв интерфейсеExecutionControl
findClass
protected Class<?> findClass(String name) throws ClassNotFoundException
Находит класс с указанным двоичным именем.
- Параметры:
-
name- двоичное имя класса - Возвращает:
- объект Class
- Исключения:
-
ClassNotFoundException- если класс не был найден
invoke
protected String invoke(Method doitMethod) throws Exception
Вызывает указанный метод "doit-method", статический метод без параметров. Метод
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 и выбрасывает преобразованное исключение.- Parameters:
-
ex- исключение для преобразования - Returns:
- никогда не возвращается, так как всегда выбрасывает
- Throws:
-
ExecutionControl.RunException- для обычных случаев возникновения исключения -
ExecutionControl.InternalException- для внутренних проблем
clientCodeEnter
protected void clientCodeEnter() throws ExecutionControl.InternalException
Помечает вход в пользовательский код.
- Throws:
-
ExecutionControl.InternalException- в случаях непредвиденных сбоев
clientCodeLeave
protected void clientCodeLeave() throws ExecutionControl.InternalException
Помечает выход из пользовательского кода.
- Throws:
-
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.
https://download.java.net/java/early_access/jdk24/docs/api/jdk.jshell/jdk/jshell/execution/DirectExecutionControl.html