SpringBoot打成war在Linux中运行报错-The temporary upload location [/tmp/……] is not valid

1、现象描述

由于某种你知道或不知道的原因,Spring Boot工程被打成了war包进行部署,在Linux上部署后在请求某功能时报错,关键日志如下:

nested exception is java.io.IOException: The temporary upload location
[/tmp/tomcat.816155955786196858.8084] is not valid

显示“临时的上次路径无效”,从Linux上查看该目录,果然也没有,那报错也就不足为怪了。

2、问题解决

问了其他同学,都说他们部署时没有任何问题,我就奇了怪了, 查了一下发现原因是这样的:一些Linux系统,会自动清理/tmp目录。
既然这样我们来解决一下这个问题。

2.1 创建不存在的目录(不推荐)

既然日志中说的那个目录在系统中不存在,那就创建一个呗:

mkdir -p /tmp/tomcat.816155955786196858.8084

由于操作系统的自动清理机制,这种办法显然是属于扬汤止沸型的,治标不治本,过一段时间可能又会出现问题,故不推荐。
当然有地方说直接重启war包也可以,但是我在尝试时一直不奏效,即使奏效也是不推荐的方案。

2.3 在配置文件中指定tomcat的临时路径(推荐)

在配置文件application.properties中指定tomcat的临时路径:

server.tomcat.basedir=/home/abc

路径根据实际情况自行指定即可。
在application.yml文件中的写法如下:

server:
  tomcat:
    basedir: /home/abc

改完之后重新打包、部署即可。

2.4 在配置类中通过@Bean指定临时目录(推荐)

@Configuration
    public class MultipartConfig{
        /**
		 * 文件上传临时路径
		 */
		@Bean
		MultipartConfigElement multipartConfigElement() {
		    MultipartConfigFactory factory = new MultipartConfigFactory();
		    factory.setLocation("/home/abc");
		    return factory.createMultipartConfig();
		}
     }    
}

3、总结

本文主要针对The temporary upload location [/tmp/……] is not valid的问题介绍了三种解决办法:创建不存在的目录、在配置文件中指定目录和通过配置类指定目录,其中的创建不存在的目录是不推荐的做法,剩下两种方法都可以使用。
好啦,问题解决,喝口水去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值