Я использовал TMP
переменную среды для управления такими вещами, как то, где gcc записывает временные файлы, но я не могу найти эквивалент для Java- API createTempFile .
Существует ли такая переменная окружения?
java
configuration
environment-variables
temp
Зак Хирш
источник
источник
Ответы:
Хммм - поскольку это обрабатывается JVM, я немного углубился в исходный код OpenJDK VM, думая, что, возможно, то, что сделано OpenJDK, имитирует то, что сделано в Java 6 и ранее. То, что это можно сделать, кроме Windows, не обнадеживает.
В Windows
get_temp_directory()
функция OpenJDK выполняет вызов Win32 APIGetTempPath()
; так в Windows Java отражает значениеTMP
переменной окружения.В Linux и Solaris одни и те же
get_temp_directory()
функции возвращают статическое значение/tmp/
.Я не знаю, следует ли фактический JDK6 этим точным соглашениям, но судя по поведению на каждой из перечисленных платформ, похоже, что они следуют.
источник
-Djava.io.tmpdir
командной строки для JVM), и если это значение по умолчанию влияет на все по ценности окружающей среды. Как наблюдали люди, на Windows , то это зависит отTMP
переменной окружения, но было неясно, есть ли какая - то неизвестная переменная для других операционных систем. Похоже, что нет, по крайней мере, с учетом того, что мы знаем об OpenJDK.GetTempPath()
влияет не толькоTMP
переменная среды: msdn.microsoft.com/en-us/library/aa364992%28VS.85%29.aspx/var/tmp/
(с ведущей косой чертой), для этого даже есть ошибка # 4391434 . А для Mac OS и Linux это/tmp
- какой бардак!oracle-java8-jdk=8u102
(linux)Согласно
java.io.File
Java DocsЧтобы указать
java.io.tmpdir
свойство System, вы можете вызвать JVM следующим образом:По умолчанию это значение должно поступать из
TMP
переменной среды в системах Windows.источник
java.io.tmpdir
определяется с помощью функции Windows SDKGetTempPath
( msdn.microsoft.com/en-us/library/aa364992%28VS.85%29.aspx ), которая будет преобразована в TMP, TEMP, USERPROFILE или каталог Windows, если каждый из предыдущее не определяется.Вы можете установить свою
_JAVA_OPTIONS
переменную окружения. Например, в bash это поможет:Я поместил это в свой сценарий входа в bash, и, похоже, это помогло.
источник
Picked up _JAVA_OPTIONS:
это полностью сбивает с толку наш процесс сборки.JAVA_TOOL_OPTIONS
более переносимый.Использовать
источник
Это не переменная среды, но все же дает вам контроль над временным каталогом:
напр .:
источник
Чтобы понять, что здесь происходит:
Рекомендуемый способ установить местоположение временного каталога - установить системное свойство с именем "java.io.tmpdir", например, указав параметр
-Djava.io.tmpdir=/mytempdir
дляjava
команды. Свойство также можно изменить из программы, вызвавSystem.setProperty("java.io.tmpdir", "/mytempdir)
... по модулю безопасности изолированной программной среды.Если вы явно не устанавливаете свойство «java.io.tmpdir» при запуске, JVM инициализирует его значением по умолчанию для конкретной платформы . Для Windows значение по умолчанию получается путем вызова метода Win32 API. Для Linux / Solaris по умолчанию явно установлено жесткое соединение. Для других JVM это могло быть что-то другое.
Опытным путем переменная среды "TMP" работает в Windows (с текущими JVM), но не на других платформах. Если вы заботитесь о переносимости, вы должны явно установить системное свойство.
источник
Используйте следующую команду на терминале UNIX:
Это отобразит все свойства java и системные настройки. В этом ищите
java.io.tmpdir
ценность.источник