java.lang.IllegalArgumentException: Not a directory

FoxHu 发布于 2015/09/11 13:26
阅读 1K+
收藏 0

@红薯 你好,想跟你请教个问题:web项目本来部署在windows server上运行正常,采用的是oschina开源的代码,现在迁移到Ubuntu server14.04,项目部署在/var/lib/tomcat7/webapps/cmsis,当用户上传文件时出现如下错误:


java.lang.IllegalArgumentException: Not a directory: /var/lib/tomcat7/webapps/cmsis/WEB-INF/tmp/Ri4rDuQL3W
	at com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:214)
	at com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:173)
	at my.mvc.MultipartRequest.<init>(MultipartRequest.java:26)
	at my.mvc.RequestContext._AutoUploadRequest(RequestContext.java:204)
	at my.mvc.RequestContext.begin(RequestContext.java:119)
	at my.mvc.URLMappingFilter.doFilter(URLMappingFilter.java:103)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)



其中at my.mvc.MultipartRequest.<init>(MultipartRequest.java:26)代码如下



其中at my.mvc.RequestContext._AutoUploadRequest(RequestContext.java:204)


//上传的临时目录设置
upload_tmp_path = webroot + "WEB-INF" + File.separator + "tmp" + File.separator;

请问这是什么原因,是文件夹权限问题吗?一般tomcat在生成环境部署的时候,对于用户上传的文件夹应该怎么处理呢?谢谢!

加载中
0
降龙罗汉
降龙罗汉

1. 从日志提示来看,是目录不存在,你可以手动新建该tmp目录

2. 不存在,会新建目录,如果服务器没有自动创建目录,那就是权限问题,那么就去增加对应父目录的写权限,然后就能自动创建目录了

FoxHu
FoxHu
回复 @卜祥龙 : 最佳答案,必须滴!
降龙罗汉
降龙罗汉
回复 @FoxHu : 嗯,都得看情况,如果服务器不是很多管理员账号,也不需要严格的分组管理的话,在tmp上加777就ok的,最重要的,记得标记最佳答案,哈哈~
Yashin
Yashin
回复 @FoxHu : 其实也不用这么狠的,临时目录,读写权限就好了
FoxHu
FoxHu
非常感谢,tmp目录是存在的,就是通过程序随机生成tmp的tmp/Ri4rDuQL3W这个目录没有创建 我通过 chmod 777 tmp后就正常了 是不是部署到Ubuntu服务器上web程序,凡是需要存储用户上传的文件是不是都要把文件夹设为权限777呢?
0
Yashin
Yashin
@英强 
英强
英强
这是要干嘛?看到@ 以为又是@北木 提bug,好惊啊
Yashin
Yashin
回复 @卜祥龙 : 你牛你回答 :)
降龙罗汉
降龙罗汉
@英强 你好
0
英强
英强
建一个tomcat用户,用tomcat用户启动tomcat,并把需要建上传目录的那个路径的权限给tomcat用户,程序执行的时候应该就有权限建目录了
降龙罗汉
降龙罗汉
嗯,有道理,不过还是需要给write权限。
返回顶部
顶部