Ik heb de TMP
omgevingsvariabele gebruikt om dingen te besturen zoals waar GCC het tijdelijke bestanden schrijft, maar ik kan geen equivalent voor Java’s Createtempfile API.
Bestaat een dergelijke omgevingsvariabele?
Antwoord 1, Autoriteit 100%
Hmmm – Aangezien dit wordt afgehandeld door de JVM, liep ik een beetje in de OpenJDK VM-broncode, denk ik dat misschien wat gedaan is door openjdk mimiceert wat gedaan is door Java 6 en voorafgaand. Het is niet geruststellend dat er een manier is om dit anders te doen dan op Windows.
op Windows , OpenJDK’s get_temp_directory()
FUNCTION MAAKT EEN WIN32 API-oproep naar GetTempPath()
; Dit is hoe op Windows Java de waarde van de TMP
omgevingsvariabele weerspiegelt.
op Linux en Solaris , dezelfde get_temp_directory()
Functies Retourneer een statische waarde van /tmp/
.
Ik weet niet of de werkelijke JDK6 deze exacte conventies volgt, maar door het gedrag op elk van de vermelde platforms lijkt het alsof ze dat doen.
Antwoord 2, Autoriteit 103%
Volgens de java.io.File
Java Docs
De standaardmap voor tijdelijke bestanden wordt gespecificeerd door de systeemeigenschap java.io.tmpdir. Op UNIX-systemen is de standaardwaarde van deze eigenschap meestal “/tmp” of “/var/tmp”; op Microsoft Windows-systemen is dit meestal “c:\temp”. Er kan een andere waarde aan deze systeemeigenschap worden gegeven wanneer de virtuele Java-machine wordt aangeroepen, maar programmatische wijzigingen aan deze eigenschap hebben geen garantie dat ze enig effect hebben op de tijdelijke map die door deze methode wordt gebruikt.
Om de java.io.tmpdir
systeemeigenschap op te geven, kunt u de JVM als volgt aanroepen:
java -Djava.io.tmpdir=/path/to/tmpdir
Standaard moet deze waarde afkomstig zijn van de omgevingsvariabele TMP
op Windows-systemen
Antwoord 3, autoriteit 52%
U kunt uw omgevingsvariabele _JAVA_OPTIONS
instellen. In bash zou dit bijvoorbeeld voldoende zijn:
export _JAVA_OPTIONS=-Djava.io.tmpdir=/new/tmp/dir
Ik heb dat in mijn bash-loginscript gezet en het lijkt te werken.
Antwoord 4, autoriteit 34%
Gebruik
$ java -XshowSettings
Property settings:
java.home = /home/nisar/javadev/javasuncom/jdk1.7.0_17/jre
java.io.tmpdir = /tmp
Antwoord 5, autoriteit 23%
Het is geen omgevingsvariabele, maar geeft je toch controle over de tijdelijke map:
-Djava.io.tmpdir
bijv.:
java -Djava.io.tmpdir=/mytempdir
Antwoord 6, autoriteit 15%
Om duidelijk te zijn over wat hier aan de hand is:
-
De aanbevolen manier om de locatie van de tijdelijke directory in te stellen, is om het systeem onroerend goed in te stellen dat “java.io.tmpdir” wordt genoemd, b.v. Door de optie
-Djava.io.tmpdir=/mytempdir
te geven aan de opdrachtjava
. Het pand kan ook worden gewijzigd vanuit een programma doorSystem.setProperty("java.io.tmpdir", "/mytempdir)
… Modulo Sandbox beveiligingsproblemen toe te roepen. -
Als u niet expliciet de eigenschap “Java.io.tmpdir” instelt bij het opstarten, initialiseert de JVM het in op een platformspecifieke standaardwaarde. Voor Windows wordt de standaardwaarde verkregen door een oproep aan een WIN32 API-methode. Voor Linux / Solaris is de standaardbruikbaar hard-bedraad. Voor andere JVMS zou het iets anders kunnen zijn.
Empirisch, de variabele “TMP” -omgeving werkt op Windows (met huidige JVMS), maar niet op andere platforms. Als u om de draagbaarheid geeft, moet u de eigenschap van het systeem expliciet instellen.
Antwoord 7, Autoriteit 5%
Gebruik hieronder opdracht op UNIX-aansluiting:
java -XshowSettings
Hiermee wordt alle Java-eigenschappen en systeeminstellingen weergegeven.
In deze op zoek naar java.io.tmpdir
waarde.
Antwoord 8
Als u in de broncode van de JDK kijkt, kunt u dat zien voor Unix-systemen die de accommodatie is gelezen op compileren tijd van de paden.h of Hard gecodeerd . Voor Windows De functie GetTempPathW
van Win32 retourneert de tmpdir
naam.
Voor POSIX-systemen zou u kunnen verwachten dat de standaard tmpdir
om te werken, maar dat is niet het geval. U kunt bevestigen dat tmpdir
niet wordt gebruikt door het uitvoeren van TMPDIR=/mytmp java -XshowSettings
Antwoord 9
We kunnen de standaard uploadlocatie van Tomcat-bestand wijzigen, zoals
We moeten de omgeving variabele instellen zoals: Catalina_Tempdir = Uw bestand uploadload.
Deze locatie zal het pad hier wijzigen: Java -djava.io.tmpdir = / pad / naar / tmpdir