Zmienna środowiskowa do sterowania java. io. tmpdir?
Użyłem zmiennej środowiskowej TMP
do kontrolowania takich rzeczy, jak miejsce, w którym gcc zapisuje pliki tymczasowe, ale nie mogę znaleźć odpowiednika dla API createTempFile w Javie.
Czy taka zmienna środowiskowa istnieje?
7 answers
Hmmm -- ponieważ jest to obsługiwane przez JVM, zagłębiłem się trochę w kod źródłowy VM OpenJDK, myśląc, że może to, co robi OpenJDK naśladuje to, co robi Java 6 i wcześniejsze. To nie jest pocieszające, że jest sposób, aby to zrobić inaczej niż na Windows.
W systemie Windows funkcja openjdk get_temp_directory()
wywołuje API Win32 do GetTempPath()
; w ten sposób w systemie Windows Java odzwierciedla wartość zmiennej środowiskowej TMP
.
Na Linuksie i Solarisie , tym samym get_temp_directory()
funkcje zwracają wartość statyczną /tmp/
.
Nie wiem, czy rzeczywisty JDK6 jest zgodny z tymi konwencjami, ale po zachowaniu na każdej z wymienionych platform, wydaje się, że tak.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-04 18:48:26
Zgodnie z java.io.File
Java Docs
Domyślny katalog plików tymczasowych jest określony przez właściwość systemową java. io. tmpdir. w systemach uniksowych domyślną wartością tej właściwości jest zazwyczaj "/ tmp " lub "/ var / tmp"; w systemach Microsoft Windows jest to zazwyczaj "c:\temp". Podczas wywoływania Wirtualnej Maszyny Java można nadać inną wartość tej właściwości systemowej, ale nie gwarantuje się, że zmiany programowe tej właściwości będą miały jakikolwiek wpływ na katalog tymczasowy używany przez tę metodę.
Aby określić właściwość systemową java.io.tmpdir
, możesz wywołać JVM w następujący sposób:
java -Djava.io.tmpdir=/path/to/tmpdir
Domyślnie wartość ta powinna pochodzić ze zmiennej środowiskowej TMP
w systemach Windows
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-22 19:37:21
Możesz ustawić swoją zmienną środowiskową. Na przykład w bash to by zadziałało:
export _JAVA_OPTIONS=-Djava.io.tmpdir=/new/tmp/dir
Umieściłem to w moim skrypcie logowania bash i wydaje się, że działa.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-04 18:46:19
Użyj
$ java -XshowSettings
Property settings:
java.home = /home/nisar/javadev/javasuncom/jdk1.7.0_17/jre
java.io.tmpdir = /tmp
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-04 19:11:39
Nie jest zmienną środowiskową, ale nadal daje Ci kontrolę nad katalogiem temp:
-Djava.io.tmpdir
Ex.:
java -Djava.io.tmpdir=/mytempdir
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-04 18:48:35
Żeby było jasne co tu się dzieje:
Zalecanym sposobem ustawienia tymczasowej lokalizacji katalogu jest ustawienie właściwości systemowej o nazwie "java. io. tmpdir", np. poprzez podanie opcji
-Djava.io.tmpdir=/mytempdir
poleceniujava
. Właściwość można również zmienić z poziomu programu przez wywołanieSystem.setProperty("java.io.tmpdir", "/mytempdir)
... modulo Sandbox problemy z bezpieczeństwem.Jeśli nie ustawisz jawnie właściwości "java.io.tmpdir" podczas uruchamiania, JVM zainicjalizuje ją do specyficznej dla platformy wartość domyślna. W systemie Windows wartość domyślna jest uzyskiwana przez wywołanie metody API Win32. Dla Linuksa / Solarisa domyślne jest najwyraźniej podłączone do sieci. Dla innych JVMs może to być coś innego.
Empirycznie, zmienna środowiskowa " TMP " działa na Windows (z bieżącym JVMs), ale nie na innych platformach. Jeśli zależy ci na przenośności, powinieneś jawnie ustawić właściwość systemową.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-18 07:54:38
Użyj poniższego polecenia na terminalu uniksowym:
java -XshowSettings
Wyświetli wszystkie właściwości Javy i ustawienia systemowe.
W tym look for java.io.tmpdir
value.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-20 04:24:42