guides documentacion docs grails dependencies linkage run-app

documentacion - java.lang.LinkageError: violación de restricción de cargador en el proyecto Grails



grails documentation 3.3 2 (5)

Creé un proyecto de Grails con POI (incluya poi-3.7 y poi-ooxml-3.7). He agregado estas 2 bibliotecas externas al bloque de dependencias en el archivo BuildConfig.groovy de mi proyecto. No hay nada extraño cuando lo compilé. Pero cuando llamé al comando "run-app" para ese proyecto, se produjo un error con stacktrace a continuación:

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

Y aquí está mi configuración:

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'') }

¿Cómo puedo hacer para solucionar esto? Muchas gracias!


No sé si esto solucionará su problema, pero supongo que su dependencia de los POI debería ser en tiempo de compilación. Intenta cambiar tus dependencias a:

dependencies { provided (''com.oracle:ojdbc6_g:11.2.0.1.0'') compile (''org.apache.poi:poi:3.7'', ''org.apache.poi:poi-ooxml:3.7'') }



Tuve un problema similar y fue un problema de caché. Eliminé el directorio .grails y .ivy2 (debajo del hogar) y resolvió mis problemas. Buena suerte.


Aquí está la solución que finalmente encontramos después de varias horas de ida y vuelta. En resumen, excluya xmlbeans de poi y cree otro jar de xmlbeans con la clase ofensiva eliminada. Aquí está el conjuro para exorcizar el error de vinculación malvado.

  • Modificar BuildConfig.groovy

dependencies { compile (''org.apache.poi:poi-ooxml:3.6'') {excludes "xmlbeans"} }

  • Extraer xmlbeans

    cd ~
    mkdir xmlbeantmp
    cd xmlbeantmp
    cp ~ / .ivy2 / cache / org.apache.xmlbeans / xmlbeans / jars / xmlbeans-2.3.0.jar.
    jar xf xmlbeans-2.3.0.jar

  • Eliminar paquete de clase ofensivo

    cd org
    rm -rf w3c /

  • Recrea el frasco

    discos compactos ../
    rm xmlbean-2.3.0.jar
    jar cf xmlbean-2.3.0.jar *

  • Copie jar en su lib de proyectos

    cp xmlbean-2.3.0.jar your_grails_project / lib /.

  • Muestra el amor

    haga clic en flecha de respuesta hacia arriba. :)


supongo que soluciono este problema. La solución de Steve Wall no quiere funcionar en Grails 2.0.0 debido al espacio de memoria de Perm / Memoria insuficiente durante la ejecución de la aplicación de Grails.

BuildConfig.groovy

.... inherits("global") { excludes ''xmlbeans'', ''xbean'' } .... runtime ''xmlbeans:xmlpublic:2.1.0'' runtime ''org.apache.poi:poi-ooxml:3.7'' ....

A continuación, descargue xbean-2.1.0.jar y aplique la solución de Steve Wall:

jar xf xbean-2.1.0.jar cd org rm -rf w3c/ cd .. rm xbean-2.1.0.jar jar cf xbean-2.1.0.patched.jar * cp xbean-2.1.0.patched.jar your_grails_project/lib/

¡Para mí funciona bien! ¡Buena suerte!