3 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
嗯-由于這是由JVM處理的,因此我稍微研究了OpenJDK VM源代碼,以為OpenJDK所做的事情可能模仿Java 6及以前的版本。除了在Windows上,還不能保證有其他方法可以做到這一點(diǎn)。
在Windows上,OpenJDK的get_temp_directory()函數(shù)對(duì)Win32 API進(jìn)行調(diào)用GetTempPath();這就是Windows上Java如何反映TMP環(huán)境變量的值的方式。
在Linux和Solaris上,相同的get_temp_directory()函數(shù)返回的靜態(tài)值/tmp/。
我不知道實(shí)際的JDK6是否遵循這些確切的約定,但是通過列出的每個(gè)平臺(tái)上的行為,看來它們確實(shí)如此。

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊
根據(jù)java.io.FileJava Docs
默認(rèn)的臨時(shí)文件目錄由系統(tǒng)屬性java.io.tmpdir指定。在UNIX系統(tǒng)上,此屬性的缺省值通常為“ / tmp”或“ / var / tmp”;默認(rèn)值為“ / tmp”或“ / var / tmp”。在Microsoft Windows系統(tǒng)上,通常為“ c:\ temp”。調(diào)用Java虛擬機(jī)時(shí),可以為此系統(tǒng)屬性賦予不同的值,但不能保證對(duì)此屬性的編程更改對(duì)此方法使用的臨時(shí)目錄沒有任何影響。
要指定java.io.tmpdirSystem屬性,可以按如下所示調(diào)用JVM:
java -Djava.io.tmpdir=/path/to/tmpdir
默認(rèn)情況下,該值應(yīng)來自TMPWindows系統(tǒng)上的環(huán)境變量

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以設(shè)置_JAVA_OPTIONS環(huán)境變量。例如,在bash中可以達(dá)到目的:
export _JAVA_OPTIONS=-Djava.io.tmpdir=/new/tmp/dir
我把它放在我的bash登錄腳本中,似乎可以解決問題。
添加回答
舉報(bào)