默认临时文件目录由系统属性Java.io.tmpdir指定。在UNIX系统上,此属性的默认值通常为“/tmp”或“/var/tmp”;在Microsoft Windows系统上,通常是“ C:EMP”。当调用Java虚拟机时,可以给出此系统属性的不同值,但是对此属性的程序化更改不能保证对此方法使用的临时目录产生任何影响。 要指定
java.io.tmpdir
系统属性,您可以使用以下方式调用JVM:
java -Djava.io.tmpdir=/path/to/tmpdir
默认值此值应来自Windows Systems上的
TMP
环境变量
hmmm-由于这是由JVM处理的,因此我稍微深入研究了OpenJDK VM源代码,以为OpenJDK所做的可能模仿Java 6和Prient所做的事情。 除了在Windows上,还有其他方法可以放心。 -windows,OpenJDK的
它不是环境变量,但仍然可以使您控制临时工:
$ java -XshowSettings
Property settings:
java.home = /home/nisar/javadev/javasuncom/jdk1.7.0_17/jre
java.io.tmpdir = /tmp
ex。:
-Djava.io.tmpdir
清楚这里发生了什么:
java -Djava.io.tmpdir=/mytempdir
给予
-Djava.io.tmpdir=/mytempdir
命令。也可以通过调用
java
仅在JVM初始化期间读取一次“ java.io.tmpdir”系统属性,其值在
System.setProperty("java.io.tmpdir", "/mytempdir)
private
选项明确设置“ java.io.tmpdir”系统属性,则JVM使用
Platformcmparity默认值。 对于Windows,默认值是通过呼叫Win32 API方法获得的。 对于Linux / Solaris,默认值显然是硬连线。 对于其他JVM,可能是其他的。
从经验上讲,“ TMP”环境变量在Windows(带有当前JVM)上起作用,但在其他平台上不起作用。 如果您关心便携性,则应明确设置系统属性。
在Unix终端上的命令下方使用:
-D
这将显示所有Java属性和系统设置。
在此外观中,java -XshowSettings
值。
java.io.tmpdir
Https://github.com/openjdk/jdk/blob/eab4c0c49934bd6f37a0b6174ca10e5c8708d13b/src/src/src/hotspot/hotspot/os/linux/linux/linux/os_linux.linux.cpp#l1317. Https://github.com/openjdk/jdk/blob/739769c8fc4b496f08a9222225a12d07414537b6c0/src/src/java.base/java.base/unix/unix/unix/conf/net.net.properties-
// This must be hard coded because it's the system's temporary
// directory not the java application's temp directory, ala java.io.tmpdir.
const char* os::get_temp_directory() { return "/tmp"; }
在这里为苹果:
https://github.com/openjdk/jdk/blob/739769c8fc4b496f08a92225a12d07414537b6c0/src/jdk.attach/macosx/native/libattach/VirtualMachineImpl.c#L322我们可以更改默认的tomcat文件上传位置,as