Переменная среды для управления java.io. tmpdir?
я использовал TMP
переменная среды для управления такими вещами, как где gcc пишет это временные файлы, но я не могу найти эквивалент для java createTempFile API.
существует ли такая переменная окружения?
7 ответов:
Hmmm -- поскольку это обрабатывается JVM, я немного углубился в исходный код OpenJDK VM, думая, что, возможно, то, что сделано OpenJDK, имитирует то, что сделано Java 6 и ранее. Это не обнадеживает, что есть способ сделать это других, чем на Windows.
On Windows, теперь это
get_temp_directory()
функция делает вызов Win32 API дляGetTempPath()
; вот как на Windows, Java отражает значениеTMP
переменные среды.On 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