Класс Runtime
- java.lang.Object
-
- java.lang.Runtime
public class Runtime extends Object
В каждом приложении Java существует единственный экземпляр класса Runtime, который позволяет приложению взаимодействовать со средой, в которой оно выполняется. Текущий экземпляр Runtime можно получить с помощью метода getRuntime.
Приложение не может создать свой собственный экземпляр этого класса.
- Since:
- JDK1.0
- См. также:
getRuntime()
Методы
| Модификатор и тип | Метод и описание |
|---|---|
void |
addShutdownHook(Thread hook) Регистрирует новый хук завершения работы виртуальной машины. |
int |
availableProcessors() Возвращает количество процессоров, доступных для виртуальной машины Java. |
Process |
exec(String command) Выполняет указанную строковую команду в отдельном процессе. |
Process |
exec(String[] cmdarray) Выполняет указанную команду и аргументы в отдельном процессе. |
Process |
exec(String[] cmdarray,
String[] envp) Выполняет указанную команду и аргументы в отдельном процессе со указанной средой. |
Process |
exec(String[] cmdarray,
String[] envp,
File dir) Выполняет указанную команду и аргументы в отдельном процессе со указанной средой и рабочей директорией. |
Process |
exec(String command,
String[] envp) Выполняет указанную строковую команду в отдельном процессе со указанной средой. |
Process |
exec(String command,
String[] envp,
File dir) Выполняет указанную строковую команду в отдельном процессе со указанной средой и рабочей директорией. |
void |
exit(int status) Завершает текущую виртуальную машину Java, инициируя процедуру завершения работы. |
long |
freeMemory() Возвращает количество свободной памяти в виртуальной машине Java. |
void |
gc() Запускает сборщик мусора. |
InputStream |
getLocalizedInputStream(InputStream in) Устарело. Начиная с JDK 1.1, предпочтительным способом перевода потока байтов в локальной кодировке в поток символов в Unicode является использование классов |
OutputStream |
getLocalizedOutputStream(OutputStream out) Устарело. Начиная с JDK 1.1, предпочтительным способом перевода потока Unicode символов в поток байтов в локальной кодировке являются классы |
static Runtime |
getRuntime() Возвращает объект runtime, связанный с текущим приложением Java. |
void |
halt(int status) Принудительно завершает текущую виртуальную машину Java. |
void |
load(String filename) Загружает системную библиотеку, заданную именем файла. |
void |
loadLibrary(String libname) Загружает системную библиотеку, заданную аргументом |
long |
maxMemory() Возвращает максимальный объем памяти, которую виртуальная машина Java попытается использовать. |
boolean |
removeShutdownHook(Thread hook) Де-регистрирует ранее зарегистрированный хук завершения работы виртуальной машины. |
void |
runFinalization() Запускает методы finalize любых объектов, ожидающих finalization. |
static void |
runFinalizersOnExit(boolean value) Устарело. Этот метод изначально небезопасен. Он может привести к вызову finalizers для активных объектов, в то время как другие потоки одновременно манипулируют этими объектами, что приводит к непредсказуемому поведению или тупику. |
long |
totalMemory() Возвращает общий объем памяти в виртуальной машине Java. |
void |
traceInstructions(boolean on) Включает/Отключает отслеживание инструкций. |
void |
traceMethodCalls(boolean on) Включает/Отключает отслеживание вызовов методов. |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Методы
getRuntime
public static Runtime getRuntime()
Возвращает объект runtime, связанный с текущим приложением Java. Большинство методов класса Runtime являются методами экземпляра и должны вызываться относительно текущего объекта runtime.
- Возвращает:
- объект
Runtime, связанный с текущим приложением Java.
exit
public void exit(int status)
Завершает выполнение текущей виртуальной машины Java, инициируя её последовательность завершения. Этот метод никогда не возвращается нормально. Аргумент служит кодом состояния; по соглашению, ненулевой код состояния указывает на аномальное завершение.
Последовательность завершения виртуальной машины состоит из двух фаз. На первой фазе все зарегистрированные shutdown hooks, если таковые имеются, запускаются в произвольном порядке и им разрешается выполняться одновременно до завершения. На второй фазе выполняются все невызванные финализаторы, если finalization-on-exit был включен. После этого виртуальная машина halts.
Если этот метод вызывается после того, как виртуальная машина начала свою последовательность завершения, то если выполняются хуки завершения, этот метод будет блокироваться неопределённо долго. Если хуки завершения уже были выполнены, и финализация при выходе была включена, то этот метод останавливает виртуальную машину с указанным кодом состояния, если состояние ненулевое; в противном случае, он блокируется неопределённо долго.
Метод является общепринятым и удобным способом вызова этого метода.System.exit
- Параметры:
-
status- Код состояния завершения. По соглашению, ненулевой код состояния указывает на аномальное завершение. - Исключение:
-
SecurityException- Если менеджер безопасности присутствует и его методне разрешает выход с указанным состояниемcheckExit - См. также:
-
SecurityException,SecurityManager.checkExit(int),addShutdownHook(java.lang.Thread),removeShutdownHook(java.lang.Thread),runFinalizersOnExit(boolean),halt(int)
addShutdownHook
public void addShutdownHook(Thread hook)
Регистрирует новый хук завершения виртуальной машины.
Виртуальная машина Java завершается в ответ на два типа событий:
- Программа завершается нормально, когда последний поток, не являющийся демоном, завершается или когда метод
(эквивалентноexitSystem.exit) вызывается, или - Виртуальная машина завершается в ответ на прерывание пользователя, такое как ввод
^C, или системное событие, такое как выход пользователя или выключение системы.
Хук завершения — это просто поток, инициализированный, но не запущенный. Когда виртуальная машина начинает последовательность завершения, она запустит все зарегистрированные хуки завершения в произвольном порядке и позволит им выполняться одновременно. После завершения всех хуков она выполнит все невызванные финализаторы, если финализация при выходе была включена. Наконец, виртуальная машина остановится. Обратите внимание, что демоны продолжат выполняться во время последовательности завершения, так же как и потоки, не являющиеся демонами, если завершение было инициировано вызовом метода .exit
После начала последовательности завершения её можно остановить только вызовом метода , который принудительно завершает виртуальную машину.halt
После начала последовательности завершения невозможно зарегистрировать новый хук завершения или дезактивировать ранее зарегистрированный хук. Попытка выполнения любой из этих операций приведёт к выбрасыванию .IllegalStateException
Хуки завершения работают в деликатный момент жизненного цикла виртуальной машины и поэтому должны быть разработаны защищённо. В частности, они должны быть написаны так, чтобы быть потокобезопасными и избегать тупиковых ситуаций по возможности. Также они не должны слепо полагаться на службы, которые могут зарегистрировать свои собственные хуки завершения, и поэтому могут сами быть в процессе завершения. Попытки использования других служб на основе потоков, например, потока обработки событий AWT, могут привести к тупиковым ситуациям.
Хуки завершения также должны быстро завершать свою работу. Когда программа вызывает , ожидается, что виртуальная машина быстро завершится и выйдет. Когда виртуальная машина завершается из-за выхода пользователя или выключения системы, операционная система может позволить только определённое время для завершения и выхода. Поэтому не рекомендуется пытаться взаимодействовать с пользователем или выполнять длительные вычисления в хуке завершения.exit
Необработанные исключения обрабатываются в хуках завершения так же, как и в любом другом потоке, вызывая метод объекта uncaughtException потока. Стандартная реализация этого метода печатает стек-трейс исключения в ThreadGroup и завершает поток; это не приводит к выходу или остановке виртуальной машины.System.err
В редких случаях виртуальная машина может прерваться, то есть остановиться, не завершаясь нормально. Это происходит, когда виртуальная машина завершается внешним образом, например, с помощью сигнала SIGKILL в Unix или вызова TerminateProcess в Microsoft Windows. Виртуальная машина также может прерваться, если родной метод не работает должным образом, например, повреждая внутренние структуры данных или пытаясь получить доступ к несуществующей памяти. Если виртуальная машина прервётся, никакой гарантии о том, будут ли запущены хуки завершения, нет.
- Параметры:
-
hook- Инициализированный, но не запущенный объектThread - Исключение:
-
IllegalArgumentException- Если указанный хук уже был зарегистрирован или если можно определить, что хук уже работает или уже был выполнен -
IllegalStateException- Если виртуальная машина уже в процессе завершения -
SecurityException- Если менеджер безопасности присутствует и отказываетсяRuntimePermission("shutdownHooks") - С:
- 1.3
- См. также:
-
removeShutdownHook(java.lang.Thread),halt(int),exit(int)
removeShutdownHook
public boolean removeShutdownHook(Thread hook)
Дезактивирует ранее зарегистрированный хук завершения виртуальной машины.
- Параметры:
-
hook- хук для удаления - Возвращает:
-
true, если указанный хук был ранее зарегистрирован и успешно дезактивирован,falseв противном случае. - Исключение:
-
IllegalStateException- Если виртуальная машина уже в процессе завершения -
SecurityException- Если менеджер безопасности присутствует и отказываетсяRuntimePermission("shutdownHooks") - С:
- 1.3
- См. также:
-
addShutdownHook(java.lang.Thread),exit(int)
halt
public void halt(int status)
Принудительно завершает текущую виртуальную машину Java. Этот метод никогда не возвращается нормально.
Этот метод следует использовать с большой осторожностью. В отличие от метода , этот метод не заставляет запускаться хуки завершения и не выполняет невызванные финализаторы, если финализация при выходе была включена. Если последовательность завершения уже была инициирована, то этот метод не ждёт завершения работы каких-либо запущенных хуков завершения или финализаторов.exit
- Параметры:
-
status- Код состояния завершения. По соглашению, ненулевой код состояния указывает на аномальное завершение. Если метод(эквивалентноexit) уже был вызван, то этот код состояния переопределит код состояния, переданный этому методу.System.exit - Исключение:
-
SecurityException- Если менеджер безопасности присутствует и его методне разрешает выход с указанным состояниемcheckExit - С:
- 1.3
- См. также:
-
exit(int),addShutdownHook(java.lang.Thread),removeShutdownHook(java.lang.Thread)
runFinalizersOnExit
@Deprecated public static void runFinalizersOnExit(boolean value)
Устарело. Этот метод изначально небезопасен. Он может привести к вызову финализаторов для активных объектов в то время, как другие потоки одновременно манипулируют этими объектами, что приводит к непредсказуемому поведению или тупику.
Включить или выключить финализацию при выходе; это указывает, что финализаторы всех объектов, у которых есть финализаторы, которые ещё не были автоматически вызваны, должны быть выполнены перед выходом Java-времени выполнения. По умолчанию финализация при выходе отключена.
Если есть менеджер безопасности, сначала вызывается его метод checkExit с аргументом 0, чтобы убедиться, что выход разрешён. Это может привести к SecurityException.
- Параметры:
-
value- true для включения финализации при выходе, false для выключения - Исключение:
-
SecurityException- если существует менеджер безопасности и его методcheckExitне позволяет выйти. - С:
- JDK1.1
- См. также:
-
exit(int),gc(),SecurityManager.checkExit(int)
exec
public Process exec(String command)
throws IOException Выполняет указанную строковую команду в отдельном процессе.
Это вспомогательный метод. Вызов вида exec(command) ведет себя точно так же, как вызов .exec(command, null, null)
- Параметры:
-
command- Указанная системная команда. - Возвращает:
- Новый объект
Processдля управления дочерним процессом - Исключение:
-
SecurityException- Если менеджер безопасности существует и его методcheckExecне разрешает создание дочернего процесса -
IOException- Если произошла ошибка ввода-вывода -
NullPointerException- Еслиcommandnull -
IllegalArgumentException- Еслиcommandпуста - См. также:
-
exec(String[], String[], File),ProcessBuilder
exec
public Process exec(String command,
String[] envp)
throws IOException Выполняет указанную строковую команду в отдельном процессе со указанной средой.
Это метод удобства. Вызов вида exec(command, envp) ведет себя точно так же, как вызов .exec(command, envp, null)
- Параметры:
-
command- указанная системная команда. -
envp- массив строк, каждый элемент которого содержит настройки переменных среды в формате имя=значение, илиnullесли дочерний процесс должен унаследовать среду текущего процесса. - Возвращает:
- Новый объект
Processдля управления дочерним процессом - Исключения:
-
SecurityException- Если существует менеджер безопасности, и его методcheckExecне разрешает создание дочернего процесса -
IOException- Если произошла ошибка ввода-вывода -
NullPointerException- Еслиcommandявляетсяnull, или один из элементовenvpявляетсяnull -
IllegalArgumentException- Еслиcommandпусто - См. также:
-
exec(String[], String[], File),ProcessBuilder
exec
public Process exec(String command,
String[] envp,
File dir)
throws IOException Выполняет указанную строковую команду в отдельном процессе со указанной средой и рабочей директорией.
Это метод удобства. Вызов вида exec(command, envp, dir) ведет себя точно так же, как вызов , где exec(cmdarray, envp, dir)cmdarray — массив всех токенов в command.
Более точно, строка command разбивается на токены с помощью StringTokenizer, созданного вызовом new , без дальнейшего изменения категорий символов. Токены, полученные токенайзером, затем помещаются в новый массив строк StringTokenizer(command)cmdarray, в том же порядке.
- Параметры:
-
command- указанная системная команда. -
envp- массив строк, каждый элемент которого содержит настройки переменных среды в формате имя=значение, илиnullесли дочерний процесс должен унаследовать среду текущего процесса. -
dir- рабочая директория дочернего процесса, илиnullесли дочерний процесс должен унаследовать рабочую директорию текущего процесса. - Возвращает:
- Новый объект
Processдля управления дочерним процессом - Исключения:
-
SecurityException- Если существует менеджер безопасности, и его методcheckExecне разрешает создание дочернего процесса -
IOException- Если произошла ошибка ввода-вывода -
NullPointerException- Еслиcommandявляетсяnull, или один из элементовenvpявляетсяnull -
IllegalArgumentException- Еслиcommandпусто - С тех пор:
- 1.3
- См. также:
ProcessBuilder
exec
public Process exec(String[] cmdarray)
throws IOException Выполняет указанную команду и аргументы в отдельном процессе.
Это метод удобства. Вызов вида exec(cmdarray) ведет себя точно так же, как вызов .exec(cmdarray, null, null)
- Параметры:
-
cmdarray- массив, содержащий команду для вызова и ее аргументы. - Возвращает:
- Новый объект
Processдля управления дочерним процессом - Исключения:
-
SecurityException- Если существует менеджер безопасности, и его методcheckExecне разрешает создание дочернего процесса -
IOException- Если произошла ошибка ввода-вывода -
NullPointerException- Еслиcmdarrayявляетсяnull, или один из элементовcmdarrayявляетсяnull -
IndexOutOfBoundsException- Еслиcmdarrayявляется пустым массивом (имеет длину0) - См. также:
ProcessBuilder
exec
public Process exec(String[] cmdarray,
String[] envp)
throws IOException Выполняет указанную команду и аргументы в отдельном процессе со указанной средой.
Это метод удобства. Вызов вида exec(cmdarray, envp) ведет себя точно так же, как вызов .exec(cmdarray, envp, null)
- Параметры:
-
cmdarray- массив, содержащий команду для вызова и ее аргументы. -
envp- массив строк, каждый элемент которого содержит настройки переменных среды в формате имя=значение, илиnullесли дочерний процесс должен унаследовать среду текущего процесса. - Возвращает:
- Новый объект
Processдля управления дочерним процессом - Исключения:
-
SecurityException- Если существует менеджер безопасности, и его методcheckExecне разрешает создание дочернего процесса -
IOException- Если произошла ошибка ввода-вывода -
NullPointerException- Еслиcmdarrayявляетсяnull, или один из элементовcmdarrayявляетсяnull, или один из элементовenvpявляетсяnull -
IndexOutOfBoundsException- Еслиcmdarrayявляется пустым массивом (имеет длину0) - См. также:
ProcessBuilder
exec
public Process exec(String[] cmdarray,
String[] envp,
File dir)
throws IOException Выполняет указанную команду и аргументы в отдельном процессе со указанной средой и рабочей директорией.
Учитывая массив строк cmdarray, представляющий токены командной строки, и массив строк envp, представляющий настройки переменных «среды», этот метод создает новый процесс для выполнения указанной команды.
Этот метод проверяет, что cmdarray является допустимой системной командой. Какие команды являются допустимыми зависит от системы, но по меньшей мере, команда должна быть непустым списком не-нулевых строк.
Если envp равно null, дочерний процесс наследует настройки среды текущего процесса.
Для запуска процесса на некоторых операционных системах может потребоваться минимальный набор системных переменных среды. В результате дочерний процесс может унаследовать дополнительные настройки переменных среды, помимо указанных в среде.
ProcessBuilder.start() теперь предпочтительный способ запуска процесса с изменённой средой.
Рабочая директория нового дочернего процесса задаётся параметром dir. Если dir равно null, дочерний процесс наследует текущую рабочую директорию текущего процесса.
Если менеджер безопасности существует, его метод checkExec вызывается с первым компонентом массива cmdarray в качестве аргумента. Это может привести к тому, что будет брошено исключение SecurityException.
Запуск системного процесса сильно зависит от системы. Среди многих возможных проблем:
- Файл программы операционной системы не был найден.
- Доступ к файлу программы был запрещен.
- Рабочая директория не существует.
В таких случаях будет брошено исключение. Точный характер исключения зависит от системы, но всегда будет подклассом IOException.
- Параметры:
-
cmdarray- массив, содержащий команду для вызова и ее аргументы. -
envp- массив строк, каждый элемент которого содержит настройки переменных среды в формате имя=значение, илиnullесли дочерний процесс должен унаследовать среду текущего процесса. -
dir- рабочая директория дочернего процесса, илиnullесли дочерний процесс должен унаследовать рабочую директорию текущего процесса. - Возвращает:
- Новый объект
Processдля управления дочерним процессом - Исключения:
-
SecurityException- Если существует менеджер безопасности, и его методcheckExecне разрешает создание дочернего процесса -
IOException- Если произошла ошибка ввода-вывода -
NullPointerException- Еслиcmdarrayявляетсяnull, или один из элементовcmdarrayявляетсяnull, или один из элементовenvpявляетсяnull -
IndexOutOfBoundsException- Еслиcmdarrayявляется пустым массивом (имеет длину0) - С тех пор:
- 1.3
- См. также:
ProcessBuilder
availableProcessors
public int availableProcessors()
Возвращает количество процессоров, доступных для виртуальной машины Java.
Это значение может меняться во время конкретного вызова виртуальной машины. Приложения, чувствительные к количеству доступных процессоров, поэтому должны периодически опрашивать эту свойство и соответствующим образом корректировать использование ресурсов.
- Возвращает:
- максимальное количество процессоров, доступных для виртуальной машины; никогда не меньше одного
- С тех пор:
- 1.4
freeMemory
public long freeMemory()
Возвращает количество свободной памяти в виртуальной машине Java. Вызов метода gc может привести к увеличению значения, возвращаемого методом freeMemory.
- Возвращает:
- приближенное значение общего количества памяти, в настоящее время доступной для будущих выделенных объектов, измеренное в байтах.
totalMemory
public long totalMemory()
Возвращает общее количество памяти в виртуальной машине Java. Возвращаемое значение этого метода может меняться со временем, в зависимости от среды хоста.
Обратите внимание, что количество памяти, необходимое для хранения объекта любого заданного типа, может зависеть от реализации.
- Возвращает:
- общее количество памяти, в настоящее время доступной для текущих и будущих объектов, измеренное в байтах.
maxMemory
public long maxMemory()
Возвращает максимальный объем памяти, который виртуальная машина Java попытается использовать. Если нет внутреннего ограничения, возвращается значение Long.MAX_VALUE.
- Возвращает:
- максимальный объем памяти, который виртуальная машина попытается использовать, измеренный в байтах
- С момента:
- 1.4
gc
public void gc()
Выполняет сборщик мусора. Вызов этого метода предполагает, что виртуальная машина Java приложит усилия для рециркуляции неиспользуемых объектов, чтобы освободить занимаемую ими память для быстрого повторного использования. Когда управление возвращается из вызова метода, виртуальная машина сделала все возможное, чтобы рециркулировать все удаленные объекты.
Название gc означает "сборщик мусора". Виртуальная машина выполняет этот процесс рециркуляции автоматически по мере необходимости в отдельном потоке, даже если метод gc не вызывается явно.
Метод System.gc() является общепринятым и удобным способом вызова этого метода.
runFinalization
public void runFinalization()
Выполняет методы завершения для любых объектов, ожидающих завершения. Вызов этого метода предполагает, что виртуальная машина Java приложит усилия для выполнения методов finalize объектов, которые были признаны удаленными, но методы finalize еще не были выполнены. Когда управление возвращается из вызова метода, виртуальная машина сделала все возможное для завершения всех ожидающих завершений.
Виртуальная машина выполняет процесс завершения автоматически по мере необходимости в отдельном потоке, если метод runFinalization не вызывается явно.
Метод System.runFinalization() является общепринятым и удобным способом вызова этого метода.
- См. также:
Object.finalize()
traceInstructions
public void traceInstructions(boolean on)
Включает/отключает трассировку инструкций. Если аргумент boolean равен true, этот метод предполагает, что виртуальная машина Java выведет информацию отладки для каждой инструкции в виртуальной машине по мере ее выполнения. Формат этой информации и файл или другой выходной поток, в который она выводится, зависят от среды хоста. Виртуальная машина может проигнорировать этот запрос, если она не поддерживает эту функцию. Место назначения выходных данных трассировки зависит от системы.
Если аргумент boolean равен false, этот метод заставляет виртуальную машину прекратить выполнение подробной трассировки инструкций.
- Параметры:
-
on-trueдля включения трассировки инструкций;falseдля отключения этой функции.
traceMethodCalls
public void traceMethodCalls(boolean on)
Включает/отключает трассировку вызовов методов. Если аргумент boolean равен true, этот метод предполагает, что виртуальная машина Java выведет информацию отладки для каждого метода в виртуальной машине при его вызове. Формат этой информации и файл или другой выходной поток, в который она выводится, зависят от среды хоста. Виртуальная машина может проигнорировать этот запрос, если она не поддерживает эту функцию.
Вызов этого метода с аргументом false предполагает, что виртуальная машина прекратит выводить информацию отладки по каждому вызову.
- Параметры:
-
on-trueдля включения трассировки инструкций;falseдля отключения этой функции.
load
public void load(String filename)
Загружает нативный библиотеку, указанную аргументом filename. Аргумент filename должен быть абсолютным путем. (например, Runtime.getRuntime().load("/home/avh/lib/libX11.so");). Если аргумент filename, после удаления любых платформоспецифичных префиксов, путей и расширений файла, указывает библиотеку, имя которой, например, L, а нативная библиотека, называемая L, статически связана с VM, то вызывается функция JNI_OnLoad_L, экспортируемая библиотекой, а не происходит попытка загрузить динамическую библиотеку. Файл, соответствующий аргументу, не обязательно должен существовать в файловой системе. Дополнительные сведения см. в спецификации JNI. В противном случае аргумент filename сопоставляется с образом нативной библиотеки по способу, зависящему от реализации.
Сначала, если существует менеджер безопасности, вызывается его метод checkLink с аргументом filename. Это может привести к исключению безопасности.
Это аналогично методу loadLibrary(String), но он принимает общее имя файла в качестве аргумента, а не только имя библиотеки, что позволяет загрузить любой файл нативного кода.
Метод System.load(String) является общепринятым и удобным способом вызова этого метода.
- Параметры:
-
filename- файл для загрузки. - Исключения:
-
SecurityException- если существует менеджер безопасности и его методcheckLinkне разрешает загрузку указанной динамической библиотеки -
UnsatisfiedLinkError- если имя файла не является абсолютным путем, нативная библиотека не статически связана с VM или библиотека не может быть отображена в образ нативной библиотеки хост-системой. -
NullPointerException- еслиfilenameравноnull - См. также:
-
getRuntime(),SecurityException,SecurityManager.checkLink(java.lang.String)
loadLibrary
public void loadLibrary(String libname)
Загружает нативную библиотеку, указанную аргументом libname. Аргумент libname не должен содержать платформоспецифического префикса, расширения файла или пути. Если нативная библиотека, называемая libname, статически связана с VM, то вызывается функция JNI_OnLoad_libname , экспортируемая библиотекой. Дополнительные сведения см. в спецификации JNI. В противном случае аргумент libname загружается из системного расположения библиотеки и отображается в образ нативной библиотеки способом, зависящим от реализации.
Сначала, если существует менеджер безопасности, вызывается его метод checkLink с аргументом libname. Это может привести к исключению безопасности.
Метод System.loadLibrary(String) является общепринятым и удобным способом вызова этого метода. Если нативные методы должны использоваться в реализации класса, стандартной стратегией является размещение нативного кода в файле библиотеки (назовем его LibFile) и затем размещение статического инициализатора:
static { System.loadLibrary("LibFile"); } внутри объявления класса. Когда класс загружается и инициализируется, необходимое нативное кодовое решение для нативных методов также загружается. Если этот метод вызывается более одного раза с одинаковым именем библиотеки, второй и последующие вызовы игнорируются.
- Параметры:
-
libname- имя библиотеки. - Исключения:
-
SecurityException- если существует менеджер безопасности и его методcheckLinkне разрешает загрузку указанной динамической библиотеки -
UnsatisfiedLinkError- если аргумент libname содержит путь к файлу, нативная библиотека не статически связана с VM или библиотека не может быть отображена в образ нативной библиотеки хост-системой. -
NullPointerException- еслиlibnameравноnull - См. также:
-
SecurityException,SecurityManager.checkLink(java.lang.String)
getLocalizedInputStream
@Deprecated public InputStream getLocalizedInputStream(InputStream in)
Устарело. Начиная с JDK 1.1, предпочтительный способ преобразования потока байтов в локальной кодировке в поток символов в Unicode — использование классов InputStreamReader и BufferedReader.
Создает локализованную версию входного потока. Этот метод принимает InputStream и возвращает InputStream, эквивалентный аргументу во всех отношениях, за исключением того, что он локализован: когда символы в локальной кодовой странице считываются из потока, они автоматически преобразуются из локальной кодовой страницы в Unicode.
Если аргумент уже является локализованным потоком, он может быть возвращен в качестве результата.
- Параметры:
-
in- входной поток для локализации - Возвращает:
- локализованный входной поток
- См. также:
-
InputStream,BufferedReader(java.io.Reader),InputStreamReader(java.io.InputStream)
getLocalizedOutputStream
@Deprecated public OutputStream getLocalizedOutputStream(OutputStream out)
Устарело. Начиная с JDK 1.1, предпочтительный способ преобразования потока символов Unicode в поток байтов в локальной кодировке — использование классов OutputStreamWriter, BufferedWriter, и PrintWriter.
Создает локализованную версию выходного потока. Этот метод принимает OutputStream и возвращает OutputStream, эквивалентный аргументу во всех отношениях, за исключением того, что он локализован: когда символы Unicode записываются в поток, они автоматически преобразуются в локальную кодовую страницу.
Если аргумент уже является локализованным потоком, он может быть возвращен в качестве результата.
- Параметры:
-
out- выходной поток для локализации - Возвращает:
- локализованный выходной поток
- См. также:
-
OutputStream,BufferedWriter(java.io.Writer),OutputStreamWriter(java.io.OutputStream),PrintWriter(java.io.OutputStream)
© 1993, 2020, 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.