Java 当部署到Tomcat5.5时,我的grails项目中的JAR没有被拾取

Java 当部署到Tomcat5.5时,我的grails项目中的JAR没有被拾取,java,tomcat,grails,Java,Tomcat,Grails,我整天都在用我的应用程序运行grails测试运行应用程序,一切正常。我键入“grails prod war”以获取war,并将其转储到tomcat安装的webapps文件夹中。现在我得到这样的信息: 11.11.2010 16:35:11 *ERROR* GrailsExceptionResolver: Executing action [index] of controller [ResumeController] caused e xception: java.lang.NoClassDe

我整天都在用我的应用程序运行grails测试运行应用程序,一切正常。我键入“grails prod war”以获取war,并将其转储到tomcat安装的webapps文件夹中。现在我得到这样的信息:

11.11.2010 16:35:11 *ERROR* GrailsExceptionResolver: Executing action [index] of controller [ResumeController]  caused e
xception: java.lang.NoClassDefFoundError: Could not initialize class org.docx4j.jaxb.Context (GrailsExceptionResolver.ja
va, line 72)
org.codehaus.groovy.grails.web.servlet.mvc.exceptions.ControllerExecutionException: Executing action [index] of controll
er [ResumeController]  caused exception: java.lang.NoClassDefFoundError: Could not initialize class org.docx4j.jaxb.Cont
ext
        at org.jsecurity.web.servlet.JSecurityFilter.doFilterInternal(JSecurityFilter.java:382)
        at org.jsecurity.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:180)
        at java.lang.Thread.run(Unknown Source)
Caused by: org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.NoClassDefFoundError: Could not initialize
class org.docx4j.jaxb.Context
        ... 3 more
Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.docx4j.jaxb.Context
        at org.docx4j.openpackaging.contenttype.ContentTypeManager.parseContentTypesFile(ContentTypeManager.java:599)
        at org.docx4j.openpackaging.io.LoadFromZipNG.process(LoadFromZipNG.java:199)
        at org.docx4j.openpackaging.io.LoadFromZipNG.get(LoadFromZipNG.java:188)
        at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:188)
        at org.docx4j.openpackaging.packages.WordprocessingMLPackage.load(WordprocessingMLPackage.java:169)
        at com.iai.skillsdb.DocxHelpers.DocxParser.openDocx4j(DocxParser.java:70)
        at ResumeController$_closure8.doCall(ResumeController.groovy:164)
        at ResumeController$_closure8.doCall(ResumeController.groovy)
        at ResumeController.invokeMethod(ResumeController.groovy)
        at ResumeController$_closure1.doCall(ResumeController.groovy:41)
        at ResumeController$_closure1.doCall(ResumeController.groovy)
        ... 3 more

这是什么原因造成的?我的WAR中肯定有docx4j jar,它也在web inf lib文件夹中

确保您拥有正确版本的docx4j,并且您的类路径中绝对没有其他版本的docx4j,此库可能有一个版本没有实现“Content”类。

您得到的是
java.lang.NoClassDefFoundError
,而不是
java.lang.ClassNotFoundException
。正在加载该类,但它所依赖的类(直接或间接通过另一个类)不存在。您很可能缺少docx4j作为依赖项所需的jar。

这是在服务器上新安装的VM-im是唯一一个使用docx4j的人,所以应该很好,您确定docx4j的版本有上下文类吗?是的,这就是提问者在最后一个问题中遇到的jar,可能与他以前的一个有关这里有很多困惑,可能只针对一个问题提出了三个问题……有没有一个解决方案可以让grails将所有必要的JAR都引入战争?是的,使用BuildConfig.groovy中的常春藤配置选项。有关示例,请参阅此博客文章: