Milieuvariabele om Java.io.tmpdir te besturen?

Ik heb de TMPomgevingsvariabele 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 TMPomgevingsvariabele 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.FileJava 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.tmpdirsysteemeigenschap 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 TMPop Windows-systemen


Antwoord 3, autoriteit 52%

U kunt uw omgevingsvariabele _JAVA_OPTIONSinstellen. 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=/mytempdirte geven aan de opdracht java. Het pand kan ook worden gewijzigd vanuit een programma door System.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.tmpdirwaarde.


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 GetTempPathWvan Win32 retourneert de tmpdirnaam.

Voor POSIX-systemen zou u kunnen verwachten dat de standaard tmpdirom te werken, maar dat is niet het geval. U kunt bevestigen dat tmpdirniet 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

Other episodes