当前位置: 代码网 > 服务器>服务器>Linux > undertow、tomcat下临时目录tmp抛错误异常的解决

undertow、tomcat下临时目录tmp抛错误异常的解决

2026年03月05日 Linux 我要评论
问题场景springboot上传文件报错:java.nio.file.nosuchfileexception: /tmp/undertow.xxxjava.nio.file.nosuchfileexc

问题场景

springboot上传文件报错:

java.nio.file.nosuchfileexception: /tmp/undertow.xxx

java.nio.file.nosuchfileexception: /tmp/tomcat.xxx

原因分析

系统长时间不使用导致临时目录被删除

spring boot 应用以 java -jar 命令启动时,会在操作系统的 /tmp 目录下生成一个临时目录,

对于http post请求来说,它需要使用这个临时目录来存储post数据。

由于临时 /tmp 目录下的文件,在长时间没有使用的情况下,系统执行了 tmp 目录清理服务,导致 /tmp/xxxx文件被清理,然而在上传的时候,undertow或tomcat 服务器需要创建临时文件,但是调用 files.createfile(…) 的时候就会发现找不到父目录,才导致了以上的错误。

解决方案

在系统中手动指定临时目录

undertow服务器

  1. 在系统中手动创建临时文件存放目录,并且分配权限
# 创建临时文件存放目录
mkdir -p /data/upload_tmp
# 修改为可写可读可执行权限
chmod 777 /data/upload_tmp
  1. 项目配置文件添加以下配置,并重启服务
spring:
  servlet:
    multipart:
      # 设置临时目录
      location: /data/upload_tmp

tomcat服务器

  1. 在系统中手动创建临时文件存放目录,并且分配权限
# 创建临时文件存放目录
mkdir -p /data/upload_tmp
# 修改为可写可读可执行权限
chmod 777 /data/upload_tmp
  1. 项目配置文件添加以下配置
spring:
  http:
    multipart:
      location: /data/upload_tmp
server:
  tomcat:
     basedir: /tmp/tomcat
  1. 配置multipartconfig
@configuration
public class multipartconfig {

  @bean
  public multipartconfigelement multipartconfigelement() {
    multipartconfigfactory factory = new multipartconfigfactory();
    factory.setlocation("/tmp/tomcat");
    return factory.createmultipartconfig();
  }
}
  1. 添加启动参数 -java.tmp.dir=/path/to/application/temp/ ,并重启

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com