Переменная среды для управления java.Ио.тмпдир?

я использовал TMP переменная среды для управления такими вещами, как, где gcc пишет, это временные файлы, но я не могу найти эквивалент для java createTempFile API-интерфейс.

существует ли такая переменная среды?

7 ответов


Хммм -- поскольку это обрабатывается JVM, я немного углубился в исходный код OpenJDK VM, думая, что, возможно, то, что сделано OpenJDK, имитирует то, что сделано Java 6 и ранее. Это не обнадеживает, что есть способ сделать это других, чем на Windows.

On Windows, теперь это get_temp_directory() функция делает вызов Win32 API для GetTempPath(); вот как в Windows Java отражает значение TMP переменные среды.

на Linux и Солярис, одно и то же get_temp_directory() функции возвращают статическое значение /tmp/.

Я не знаю, следует ли фактический JDK6 этим точным соглашениям, но по поведению на каждой из перечисленных платформ, похоже, что они делают.


по словам java.io.File Java Docs

каталог временных файлов по умолчанию задается системным свойством java.Ио.тмпдир. В системах UNIX значение этого свойства по умолчанию обычно "/ tmp " или "/var/tmp"; в системах Microsoft Windows это обычно "c:\temp". При вызове виртуальной машины Java этому системному свойству может быть присвоено другое значение, но программные изменения этого свойства не гарантируют никакого эффекта на временном каталоге, используемом этим методом.

указать java.io.tmpdir системное свойство, вы можете вызвать JVM следующим образом:

java -Djava.io.tmpdir=/path/to/tmpdir

по умолчанию это значение должно исходить из TMP переменные среды в Windows


Вы можете установить свой _JAVA_OPTIONS переменные среды. Например, в bash это сделает трюк:

export _JAVA_OPTIONS=-Djava.io.tmpdir=/new/tmp/dir

Я поместил это в свой скрипт входа в систему bash, и, похоже, это делает трюк.


использовать

$ java -XshowSettings
Property settings:
    java.home = /home/nisar/javadev/javasuncom/jdk1.7.0_17/jre
    java.io.tmpdir = /tmp

это не переменная среды, но все же дает вам контроль над Temp dir:

-Djava.io.tmpdir

ex.:

java -Djava.io.tmpdir=/mytempdir

чтобы быть ясным о том, что здесь происходит:

  • рекомендуемый способ установки временного местоположения каталога-установить системное свойство под названием "java.Ио.tmpdir", например, путем предоставления опции -Djava.io.tmpdir=/mytempdir до


используйте команду ниже на терминале UNIX:

java -XshowSettings

это отобразит все свойства java и системные настройки. В этом ищите java.io.tmpdir значение.