【问题标题】:ImageIO.write Permission denied issue Ubuntu JavaImageIO.write 权限被拒绝问题 Ubuntu Java
【发布时间】:2015-06-01 20:19:42
【问题描述】:

我正在使用 Struts2,Java webapplication,Ubuntu 作为服务器

我正在尝试在我的应用程序中上传图像,它在我的本地机器 (Ubuntu) 中完美运行,使用相同的代码尝试在 ubuntu 服务器机器中上传图像。它抛出一个错误,我在使用imageIO.write的应用程序中有一个图像调整代码。使用以下代码

thumbnail=Scalr.resize(image,Scalr.Method.SPEED,Scalr.Mode.FIT_TO_WIDTH,480,10,Scalr.OP_ANTIALIAS);
ImageIO.write(thumbnail, ext, resizeFile); 
FileUtils.copyFile(resizeFile, desFile);

当到达这个 ImageIO.write 点时,会抛出以下异常

java.io.FileNotFoundException: 1342e10.jpg (Permission denied)
        at java.io.RandomAccessFile.open(Native Method)
        at java.io.RandomAccessFile.<init>(RandomAccessFile.java:236)
        at javax.imageio.stream.FileImageOutputStream.<init>(FileImageOutputStream.java:69)
        at com.sun.imageio.spi.FileImageOutputStreamSpi.createOutputStreamInstance(FileImageOutputStreamSpi.java:55)
        at javax.imageio.ImageIO.createImageOutputStream(ImageIO.java:409)
        at javax.imageio.ImageIO.write(ImageIO.java:1520)
        at com.platinum.uac.biz.FileUpload.fileUpload(FileUpload.java:124)
        at com.platinum.uac.biz.FileUploadByAjaxAction.ajaxFileUploadAction(FileUploadByAjaxAction.java:98)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:622)
        at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
        at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
        at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
        at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
        at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
        at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:306)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
        at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
        at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
 at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:701)
Exception Apple  java.lang.NullPointerException

执行 ImageIo.write 时是否创建文件。如果是,位置在哪里?当时的用户是谁?

我猜写权限可能会受到限制。但是我该如何解决呢?

【问题讨论】:

  • 此时的用户,是启动程序的用户(一般情况下)你可以试试ps -aux | grep java(或类似的)来识别进程的用户
  • 什么是resizeFile.getAbsolutePath()?你有这个文件目录的写权限吗?

标签: java jakarta-ee ubuntu struts2 ubuntu-server


【解决方案1】:

ImageIO.write 确实写入了一个文件,是的。取决于你给它的文件名:如果它是一个绝对文件名,它应该是显而易见的。如果不是,则取决于您当前的目录,这取决于您从何处启动程序。

【讨论】:

    【解决方案2】:

    确保您正在运行 应用 &|开发环境 作为超级用户 即“sudo ./eclipse” 或“sudo ./your_app.jar”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-02
      • 2019-06-05
      • 2015-01-28
      • 2015-05-24
      • 2021-08-30
      • 2013-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多