我正在从web-app / images中读取图像,并在不同名称的相同位置创建相同的副本。 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 at BootStrap $ _closure1.doCall(BootStrap.groovy:39)at grails.util.Environment.evaluateEnvironmentSpecificBlock(Environment.java:308) 在 grails.util.Environment.executeForEnvironment(Environment.java:301) 在 grails.util.Environment.executeForCurrentEnvironment(Environment.java:277) 在 java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:471) 在java.util.concurrent.FutureTask.run(FutureTask.java:262)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:615) 在java.lang.Thread.run(Thread.java:745)引起: javax.imageio.IIOException:无法读取输入文件!
请告诉我如何解决这个问题。或者我可以通过相对路径而不是真实路径来做同样的事情吗?
答案 0 :(得分:0)
如果您在本地进行测试,并且是否有效。这可能是由于服务器问题与权限设置有关。
请检查tomcat webapps 目录的权限,至少确保其可读写为755。
chmod u+x / 755 webapps
如果没有,请添加更多代码,检查您的错误,,,如果您还使用过任何其他插件?
答案 1 :(得分:0)
请注意,您需要部署为解压缩的war,否则getRealPath会在Tomcat上返回null。在conf目录下,查看server.xml以获取unpackWARs属性。
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="false">