作为grails / groovy / maven / tomcat等的(极端)新手,我努力设置一个CentOS盒来运行grails应用程序。我使用的是VMWare Fusion,CentOS 5.8,Grails 1.3.2,ImageMagick-6.2.8,Tomcat 6.0.35。我选择安装Sun的Java。
生成我的War文件后,我将其复制到Tomcat的webapps目录中。
就在那时,我看到catalina.out中生成了以下错误:
2012-03-28 08:00:20,676 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] ERROR context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'grailsApplication' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.ExceptionInInitializerError: Please set Image Magic Home environment variable first
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ExceptionInInitializerError: Please set Image Magic Home environment variable first
at SendFaxService.(SendFaxService.groovy:41)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
我相信错误的相关部分是:请先设置Image Magic Home环境变量
考虑到这一点,我做了yum install ImageMagick
。我用谷歌搜索了Image Magic Environment变量,看到一个名为'$ MAGICK_HOME',所以我执行了export MAGICK_HOME="/usr/share/ImageMagick-6.2.8"
,并将它放在root的.bashrc文件中。重启后,似乎我的用户和root都可以执行echo $MAGICK_HOME
并获得正确的值。
当我将war文件放入webapps文件夹时,我仍然得到相同的错误行。
所以我问你友好的互联网居民,我做了什么值得这个?
实际上,请告诉我如何修复它。谢谢!
答案 0 :(得分:0)
即使Tomcat以root身份运行,并且root可以看到MAGICK_HOME环境变量,但Tomcat在尝试安装依赖于ImageMagick的战争时仍然无法做到。
我将导出语句直接添加到catalina.sh的顶部:
export MAGICK_HOME=/usr/share/ImageMagick-6.2.8
Voila,它奏效了。可能有一个更好的解决方案,并不涉及这种毫不掩饰的hackery。请提交,我很乐意将其标记为最佳解决方案。