Переменная среды для управления 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.FileJava 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.tmpdirex.:
java -Djava.io.tmpdir=/mytempdir