战争安装失败,因为没有设置Image Magic Home Environment变量(尽管我另有说明)

时间:2012-03-28 23:05:38

标签: tomcat grails imagemagick centos war

作为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文件夹时,我仍然得到相同的错误行。

所以我问你友好的互联网居民,我做了什么值得这个?

实际上,请告诉我如何修复它。谢谢!

1 个答案:

答案 0 :(得分:0)

即使Tomcat以root身份运行,并且root可以看到MAGICK_HOME环境变量,但Tomcat在尝试安装依赖于ImageMagick的战争时仍然无法做到。

我将导出语句直接添加到catalina.sh的顶部:

export MAGICK_HOME=/usr/share/ImageMagick-6.2.8

Voila,它奏效了。可能有一个更好的解决方案,并不涉及这种毫不掩饰的hackery。请提交,我很乐意将其标记为最佳解决方案。