grails - java.lang.LinkageError : loader constraint violation in Grails project

标签 grails dependencies linkage run-app

我已经用POI构建了Grails项目(包括poi-3.7和poi-ooxml-3.7)。我已将这2个外部库添加到项目的BuildConfig.groovy文件中的依赖关系块中。当我编译它时,没有什么奇怪的。但是,当我为该项目调用命令“run-app”时,出现以下堆栈跟踪错误:

Base Directory: <path-to-my-project>
Resolving dependencies...
Dependencies resolved in 5546ms.
Running script D:\_TOOLS\STS\grails-1.3.5\scripts\RunApp.groovy
Environment set to development
Running Grails application..
2011-05-23 18:51:01,225 [main] ERROR context.GrailsContextLoader  - Error executing bootstraps: java.lang.LinkageError: loader constraint violation: loader (instance of <bootloader>) previously initiated loading for a different type with name "org/w3c/dom/DOMConfiguration"
org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.LinkageError: loader constraint violation: loader (instance of <bootloader>) previously initiated loading for a different type with name "org/w3c/dom/DOMConfiguration"
    at grails.spring.BeanBuilder.invokeBeanDefiningClosure(BeanBuilder.java:723)
    at grails.spring.BeanBuilder.beans(BeanBuilder.java:573)
    at grails.spring.BeanBuilder.invokeMethod(BeanBuilder.java:519)
    at org.grails.tomcat.TomcatServer.start(TomcatServer.groovy:212)
    at grails.web.container.EmbeddableServer$start.call(Unknown Source)
    at RunApp$_run_closure5_closure12.doCall(RunApp:158)
    at RunApp$_run_closure5_closure12.doCall(RunApp)
    at _GrailsSettings_groovy$_run_closure10.doCall(_GrailsSettings_groovy:280)
    at _GrailsSettings_groovy$_run_closure10.call(_GrailsSettings_groovy)
    at RunApp$_run_closure5.doCall(RunApp:149)
    at RunApp$_run_closure5.call(RunApp)
    at RunApp.runInline(RunApp:116)
    at RunApp.this$4$runInline(RunApp)
    at RunApp$_run_closure1.doCall(RunApp:59)
    at RunApp$_run_closure1.doCall(RunApp:33)
    at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:381)
    at gant.Gant$_dispatch_closure7.doCall(Gant.groovy:415)
    at gant.Gant$_dispatch_closure7.doCall(Gant.groovy)
    at gant.Gant.withBuildListeners(Gant.groovy:427)
    at gant.Gant.this$2$withBuildListeners(Gant.groovy)
    at gant.Gant$this$2$withBuildListeners.callCurrent(Unknown Source)
    at gant.Gant.dispatch(Gant.groovy:415)
    at gant.Gant.this$2$dispatch(Gant.groovy)
    at gant.Gant.invokeMethod(Gant.groovy)
    at gant.Gant.executeTargets(Gant.groovy:590)
    at gant.Gant.executeTargets(Gant.groovy:589)

Caused by: java.lang.LinkageError: loader constraint violation: loader (instance of <bootloader>) previously initiated loading for a different type with name "org/w3c/dom/DOMConfiguration"
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
    at java.lang.Class.getDeclaredMethods(Class.java:1791)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:46)
    at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:33)
    at grails.spring.DynamicElementReader.invokeMethod(DynamicElementReader.groovy:121)
    ... 26 more  

这是我的配置:
dependencies {  
        provided ('com.oracle:ojdbc6_g:11.2.0.1.0')  
        runtime ('org.apache.poi:poi:3.7', 'org.apache.poi:poi-ooxml:3.7')  
    }  

我该怎么做才能解决这个问题?非常感谢!

最佳答案

这是我们经过几个小时的反复来终于解决的问题。简而言之,从poi中排除xmlbeans并创建另一个删除了有问题的类的xmlbeans jar。这是驱除邪恶的链接错误的咒语。

  • 修改BuildConfig.groovy
  • 
        dependencies {
           compile ('org.apache.poi:poi-ooxml:3.6') {excludes "xmlbeans"}
        }
    
  • 提取xmlbeans

    光盘〜
    mkdir xmlbeantmp
    cd xmlbeantmp
    cp〜/.ivy2/cache/org.apache.xmlbeans/xmlbeans/jars/xmlbeans-2.3.0.jar。
    jar xf xmlbeans-2.3.0.jar
  • 删除有问题的类包

    光盘组织
    rm -rf w3c/
  • 重新创建 jar

    cd ../
    rm xmlbean-2.3.0.jar
    jar cf xmlbean-2.3.0.jar *
  • 将jar复制到您的项目库中

    cp xmlbean-2.3.0.jar your_grails_project/lib/。
  • 显示爱意

    单击向上回答箭头。 :)
  • 关于grails - java.lang.LinkageError : loader constraint violation in Grails project,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6097279/

    相关文章:

    spring - Grails 3 session 超时在部署到 Tomcat 时不起作用

    c++ - 保证 C++ 库、C 链接的二进制兼容性的简单方法?

    c - 外部、内部且没有链接,或者为什么这不起作用?

    c++ - 为什么外部模板被重新声明为 "different kind of entity"?

    grails - 使用 Maven 构建 Grails 项目的问题

    grails - Webflow:是否可以在流之间切换?

    grails - 从GSP打开新窗口并转发到外部URL

    java - Gradle构建未添加所有 “private”库

    copy - 如何在gradle中复制依赖库JAR

    android支持Rtl冲突,建议添加 'tools:replace'