Java 在grails中读取和写入web应用中的图像文件

Java 在grails中读取和写入web应用中的图像文件,java,grails,Java,Grails,我正在从web应用程序/图像中读取图像,并在同一位置以不同的名称创建相同图像的副本。Grails应用程序 我正在使用以下代码获取文件的真实路径 def serveletContext = ServletContextHolder.servletContext def filePath = serveletContext.getRealPath( "web-app/images" ) def actFile= new File(filePath+ "myimg.png")

我正在从web应用程序/图像中读取图像,并在同一位置以不同的名称创建相同图像的副本。Grails应用程序

我正在使用以下代码获取文件的真实路径

    def serveletContext = ServletContextHolder.servletContext
    def filePath = serveletContext.getRealPath( "web-app/images" )
    def actFile= new File(filePath+ "myimg.png")
    final BufferedImage image = ImageIO.read(actFile)
这在我的开发环境中运行良好。读写都很好。 当我在Tomcat中部署WAR应用程序时,我得到了一个异常

java.lang.reflect.UndeclaredThrowableException位于 BootStrap$\u closure1.doCallBootStrap.groovy:39 at grails.util.Environment.EvaluateEnvironment SpecificBlockEnvironment.java:308 在 grails.util.Environment.executeForEnvironmentEnvironment.java:301 在 grails.util.Environment.executeForCurrentEnvironmentEnvironment.java:277 在 java.util.concurrent.Executors$RunnableAdapter.callExecutors.java:471 在java.util.concurrent.FutureTask.runFutureTask.java:262处 java.util.concurrent.ThreadPoolExecutor.runWorkerThreadPoolExecutor.java:1145 在 java.util.concurrent.ThreadPoolExecutor$Worker.runThreadPoolExecutor.java:615 在java.lang.Thread.runThread.java:745处,由以下原因引起: javax.imageio.IIOException:无法读取输入文件


请告诉我如何解决这个问题。或者我也可以通过使用相对路径而不是实际路径来做同样的事情?

如果您在本地测试了它并且它正在工作。这可能是由于与权限设置相关的服务器问题造成的

请检查tomcat webapps目录上的权限,至少确保它可以读写到755

chmod u+x/755网络应用程序


如果没有,请添加更多代码,以检查您的bug,,,如果您还使用了任何其他插件?

请注意,您需要作为未打包的war进行部署,否则getRealPath在Tomcat上返回null。在conf目录下,查看server.xml中的unpackars属性

<Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="false">

您是否检查过任何与权限相关的问题?如果服务器是linux?