web-dev-qa-db-fra.com

Impossible de créer tempDir, Java.io.tmpdir est défini sur C:\Windows \.

J'utilise Spring Boot avec Tomcat intégré, tout a bien fonctionné et, tout à coup, j'ai eu l'erreur:

Caused by: org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to create tempDir. Java.io.tmpdir is set to C:\Windows\
    at org.springframework.boot.context.embedded.AbstractEmbeddedServletContainerFactory.createTempDir(AbstractEmbeddedServletContainerFactory.Java:183)
    at org.springframework.boot.context.embedded.Tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.Java:165)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.Java:164)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.Java:134)
    ... 11 common frames omitted
Caused by: Java.io.IOException: Access is denied
    at Java.io.WinNTFileSystem.createFileExclusively(Native Method)
    at Java.io.File.createTempFile(File.Java:2024)
    at Java.io.File.createTempFile(File.Java:2070)
    at org.springframework.boot.context.embedded.AbstractEmbeddedServletContainerFactory.createTempDir(AbstractEmbeddedServletContainerFactory.Java:174)
    ... 14 common frames omitted

Je n'ai fait aucune manipulation avec des variables utilisateur ou système.

Mon variable TEMP user est à la recherche de C:/Users/me/AppData/Local/Temp, et je suppose que Tomcat doit utiliser cette valeur au lieu du système 1, qui est en fait C:/Windows/Temp

6
ilya

Si vous utilisez IDEA, cochez la case "Inclure les variables d'environnement parent" dans la fenêtre Variables d'environnement de la configuration Exécuter/Déboguer.

9
Max

J'ai observé le comportement suivant

  • changé tout d'un coup
  • fonctionne si exécuté depuis la ligne de commande en tant que jar autonome
  • échoue lors de l'exécution d'IntelliJ (2018.1)

Pour remédier rapidement à cette situation, j’ai explicitement ajouté -Djava.io.tmpdir=$EXISING_DIR_WITH_WRITE_ACCESS en tant que paramètre JVM dans les configurations d’exécution.

2
HannesB

Si vous utilisez Eclipse, cochez la case "Ajouter aux variables d'environnement" dans la fenêtre Variables d'environnement de la configuration Exécuter/Déboguer.

Merci à @max répondre ci-dessus

J'utilisais Java EE Eclipse - photon

0

Dans mon cas, le problème est survenu lorsque j'ai modifié ma bibliothèque d'espace de travail par défaut de [jre.1.8.0_121] à [jdk.1.8.0_121]. Le ramener à jre semble avoir résolu le problème.

0
rodicc