Mac Eclipse Tomcat 权限问题


Mac Eclipse Tomcat 权限问题

1. tomcat启动服务是发现端口被占用,可用终端查看占用端口的进程并强制杀掉。
bogon:~ luohan$ lsof -i :8080
bogon:~ luohan$ kill -9 8080

2. 同样的代码在其他电脑上使用tomcat运行项目没问题,而在自己电脑上运行报错,如果你们所使用的tomcat版本不一样,那多半都是tomcat版本不一造成。

3. 权限问题。在struts.xml文件中配置的某些路径,没有权限访问或创建导致的,当执行到该逻辑时报错如下:
2016-12-10 19:09:54,121 [CommonsLogger:64] WARN - Unable to parse request
org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. /temp/upload__4f2ecf0e_158e86ccc48__8000_00000000.tmp (Permission denied)
     at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:367)
     at org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest.parseRequest(JakartaMultiPartRequest.java:189)
     at org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest.processUpload(JakartaMultiPartRequest.java:127)
     at org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest.parse(JakartaMultiPartRequest.java:92)
     at org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper.<init>(MultiPartRequestWrapper.java:81)
     at org.apache.struts2.dispatcher.Dispatcher.wrapRequest(Dispatcher.java:803)
     at org.apache.struts2.dispatcher.ng.PrepareOperations.wrapRequest(PrepareOperations.java:134)
     at com.agerbray.framework.filter.StrutsFilter.doFilter(StrutsFilter.java:77)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522)
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
     at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
     at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110)
     at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
     at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785)
     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1425)
     at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
     at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.FileNotFoundException: /temp/upload__4f2ecf0e_158e86ccc48__8000_00000000.tmp (Permission denied)
     at java.io.FileOutputStream.open0(Native Method)
     at java.io.FileOutputStream.open(FileOutputStream.java:270)
     at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
     at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
     at org.apache.commons.io.output.DeferredFileOutputStream.thresholdReached(DeferredFileOutputStream.java:178)
     at org.apache.commons.io.output.ThresholdingOutputStream.checkThreshold(ThresholdingOutputStream.java:224)
     at org.apache.commons.io.output.ThresholdingOutputStream.write(ThresholdingOutputStream.java:128)
     at org.apache.commons.fileupload.util.Streams.copy(Streams.java:101)
     at org.apache.commons.fileupload.util.Streams.copy(Streams.java:64)
     at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:362)
     ... 26 more
检查struts.xml中发现在系统根目录创建了temp目录,如果使用非root用户执行tomcat当然会报错,于是我在终端中进入tomcat目录下使用root用户执行./startup.sh就没问题。那么,终端中使用root账户执行open /Application/Eclipase.app,然后再Eclipse中启动tomcat可以吗?测试发现,不行。

解决办法:
  <!-- 上传临时文件夹 —>
 
<constant name="struts.multipart.saveDir" value="/temp" />   <--  将 /temp 改成 ~/temp --> 



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值