【问题标题】:Jars in my grails project not being picked up when deployed to tomcat 5.5部署到 tomcat 5.5 时,我的 grails 项目中的罐子没有被拾取
【发布时间】:2010-11-11 21:48:59
【问题描述】:

我整天都在用我的应用程序运行一个 grails 测试运行应用程序,这很好。我键入“grails prod 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 文件夹中。

【问题讨论】:

    标签: java tomcat grails


    【解决方案1】:

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

    【讨论】:

    • 是的,这就是提问者在最后一个问题中遇到的问题,可能与他之前的问题有关。 - 那里很混乱,可能为一个问题打开三个问题......
    • 有没有一种解决方案可以让 grails 将所有必要的罐子拉到战争中?
    • 是的,使用 BuildConfig.groovy 中的 Ivy 配置选项。有关示例,请参阅此博客文章:blogs.bytecode.com.au/glen/2010/11/04/…
    【解决方案2】:

    确保您拥有正确版本的 docx4j,并且在您的类路径中绝对没有其他版本的 docx4j,可能存在未实现“内容”类的此库版本。

    【讨论】:

    • 这是在服务器上全新安装虚拟机 - 我是唯一使用 docx4j 的虚拟机,所以应该没问题
    • 你确定docx4j的版本有Context类吗?
    猜你喜欢
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 2012-02-14
    • 2023-03-05
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多