我已经用POI(包括poi-3.7和poi-ooxml-3.7)构建了一个Grails项目.我已经在项目的BuildConfig.groovy文件中添加了这2个外部库到依赖关系.当我编译它没有什么奇怪的.但是当我为该项目调用了命令“run-app”时,下面的stacktrace发生错误:
- 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
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 /.
>显示爱情
点击回答向上箭头.