java.lang.LinkageError:Grails项目中的加载器约束违规

前端之家收集整理的这篇文章主要介绍了java.lang.LinkageError:Grails项目中的加载器约束违规前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经用POI(包括poi-3.7和poi-ooxml-3.7)构建了一个Grails项目.我已经在项目的BuildConfig.groovy文件添加了这2个外部库到依赖关系.当我编译它没有什么奇怪的.但是当我为该项目调用了命令“run-app”时,下面的stacktrace发生错误
  1. Base Directory: <path-to-my-project>
  2. Resolving dependencies...
  3. Dependencies resolved in 5546ms.
  4. Running script D:\_TOOLS\STS\grails-1.3.5\scripts\RunApp.groovy
  5. Environment set to development
  6. Running Grails application..
  7. 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"
  8. 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"
  9. at grails.spring.BeanBuilder.invokeBeanDefiningClosure(BeanBuilder.java:723)
  10. at grails.spring.BeanBuilder.beans(BeanBuilder.java:573)
  11. at grails.spring.BeanBuilder.invokeMethod(BeanBuilder.java:519)
  12. at org.grails.tomcat.TomcatServer.start(TomcatServer.groovy:212)
  13. at grails.web.container.EmbeddableServer$start.call(Unknown Source)
  14. at RunApp$_run_closure5_closure12.doCall(RunApp:158)
  15. at RunApp$_run_closure5_closure12.doCall(RunApp)
  16. at _GrailsSettings_groovy$_run_closure10.doCall(_GrailsSettings_groovy:280)
  17. at _GrailsSettings_groovy$_run_closure10.call(_GrailsSettings_groovy)
  18. at RunApp$_run_closure5.doCall(RunApp:149)
  19. at RunApp$_run_closure5.call(RunApp)
  20. at RunApp.runInline(RunApp:116)
  21. at RunApp.this$4$runInline(RunApp)
  22. at RunApp$_run_closure1.doCall(RunApp:59)
  23. at RunApp$_run_closure1.doCall(RunApp:33)
  24. at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:381)
  25. at gant.Gant$_dispatch_closure7.doCall(Gant.groovy:415)
  26. at gant.Gant$_dispatch_closure7.doCall(Gant.groovy)
  27. at gant.Gant.withBuildListeners(Gant.groovy:427)
  28. at gant.Gant.this$2$withBuildListeners(Gant.groovy)
  29. at gant.Gant$this$2$withBuildListeners.callCurrent(Unknown Source)
  30. at gant.Gant.dispatch(Gant.groovy:415)
  31. at gant.Gant.this$2$dispatch(Gant.groovy)
  32. at gant.Gant.invokeMethod(Gant.groovy)
  33. at gant.Gant.executeTargets(Gant.groovy:590)
  34. at gant.Gant.executeTargets(Gant.groovy:589)
  35.  
  36. 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"
  37. at java.lang.Class.getDeclaredMethods0(Native Method)
  38. at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
  39. at java.lang.Class.getDeclaredMethods(Class.java:1791)
  40. at java.security.AccessController.doPrivileged(Native Method)
  41. at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:46)
  42. at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:33)
  43. at grails.spring.DynamicElementReader.invokeMethod(DynamicElementReader.groovy:121)
  44. ... 26 more

这里是我的配置:

  1. dependencies {
  2. provided ('com.oracle:ojdbc6_g:11.2.0.1.0')
  3. runtime ('org.apache.poi:poi:3.7','org.apache.poi:poi-ooxml:3.7')
  4. }

我该如何解决这个问题?非常感谢!

解决方法

这是我们终于在几个小时回来之后到来的修复.简而言之,从poi中排除xmlbeans,并创建另一个xmlbeans jar,并删除违规类.这是驱邪邪恶联动错误的咒语.

>修改BuildConfig.groovy

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

>提取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
>删除违规类包

cd org
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 /.
>显示爱情

点击回答向上箭头.

猜你在找的Java相关文章