3 回答
TA贡献1829条经验 获得超4个赞
嗯-由于这是由JVM处理的,因此我稍微研究了OpenJDK VM源代码,以为OpenJDK所做的事情可能模仿Java 6及以前的版本。除了在Windows上,还不能保证有其他方法可以做到这一点。
在Windows上,OpenJDK的get_temp_directory()函数对Win32 API进行调用GetTempPath();这就是Windows上Java如何反映TMP环境变量的值的方式。
在Linux和Solaris上,相同的get_temp_directory()函数返回的静态值/tmp/。
我不知道实际的JDK6是否遵循这些确切的约定,但是通过列出的每个平台上的行为,看来它们确实如此。
TA贡献1821条经验 获得超4个赞
根据java.io.FileJava Docs
默认的临时文件目录由系统属性java.io.tmpdir指定。在UNIX系统上,此属性的缺省值通常为“ / tmp”或“ / var / tmp”;默认值为“ / tmp”或“ / var / tmp”。在Microsoft Windows系统上,通常为“ c:\ temp”。调用Java虚拟机时,可以为此系统属性赋予不同的值,但不能保证对此属性的编程更改对此方法使用的临时目录没有任何影响。
要指定java.io.tmpdirSystem属性,可以按如下所示调用JVM:
java -Djava.io.tmpdir=/path/to/tmpdir
默认情况下,该值应来自TMPWindows系统上的环境变量
TA贡献1804条经验 获得超7个赞
您可以设置_JAVA_OPTIONS环境变量。例如,在bash中可以达到目的:
export _JAVA_OPTIONS=-Djava.io.tmpdir=/new/tmp/dir
我把它放在我的bash登录脚本中,似乎可以解决问题。
添加回答
举报