Grails 圣杯无法制造战争

Grails 圣杯无法制造战争,grails,dependencies,war,Grails,Dependencies,War,有人见过这个问题吗?这里的原因是什么 执行脚本War时出错:接口中的加载程序约束冲突 itable初始化:解析方法时 “groovy.util.XmlParser.setDocumentLocator(Lorg/xml/sax/Locator;)V” 类装入器(的实例) org/codehaus/groovy/grails/cli/support/GrailsRootLoader)的 当前类、groovy/util/XmlParser和类装入器(实例 对于接口org/xml/sax/Conten

有人见过这个问题吗?这里的原因是什么

执行脚本War时出错:接口中的加载程序约束冲突 itable初始化:解析方法时 “groovy.util.XmlParser.setDocumentLocator(Lorg/xml/sax/Locator;)V” 类装入器(的实例) org/codehaus/groovy/grails/cli/support/GrailsRootLoader)的 当前类、groovy/util/XmlParser和类装入器(实例 对于接口org/xml/sax/ContentHandler 中使用的类型org/xml/sax/Locator的不同类对象 签名

位于java.lang.Class.forName0(本机方法) java.lang.Class.forName(Class.java:169)位于 _GrailsWar\u groovy$运行\u closure4.class$(\u GrailsWar\u groovy)在 _GrailsWar\u groovy$\u run\u closure4.$get$$class$groovy$util$XmlParser(\u GrailsWar\u groovy) 在"GrailsWar"groovy$"运行"closure4.doCall("GrailsWar"groovy:186)处 War$\u run\u closure1.doCall(War.groovy:38)位于 gant.gant$\u dispatch\u closure5.doCall(gant.groovy:381)位于 gant.gant$\u dispatch\u closure7.doCall(gant.groovy:415)位于 gant.gant$\u dispatch\u closure7.doCall(gant.groovy)位于 gant.gant.withBuildListeners(gant.groovy:427)位于
这个$2$withBuildListeners(gant.groovy)位于 gant.gant$此$2$withBuildListeners.callCurrent(未知源)位于 甘特图甘特图调度(甘特图groovy:415)位于
这个$2$dispatch(gant.groovy)位于 位于
位于
gant.gant.executeTargets(gant.groovy:589)

编辑:正如Tim和Peter在下面回答的,这个问题是一个典型的xml api库,阻碍了类加载器的发展。从ivy缓存目录中删除它之后,我能够运行依赖关系报告,并清楚地看到它被hibernate->dom4j->XMLAPI拉入。我在另一台具有相同代码库的机器上运行了相同的报告,但没有看到该依赖关系被拉入。因此,我仍在试图找出这一问题的根源。我的快速修复方法是在BuildConfig中添加以下内容

inherits("global") {
       excludes ( "xml-apis", "commons-digester")
    }
已将
XMLAPI
模块拉入类路径

GroovyWS有时是罪魁祸首。您最近是否向依赖项添加了任何内容

我认为这个项目过去是有效的…所以它一定是最近有人添加的东西

回顾一下您的源代码管理可能会帮助您了解它是什么


或者它可能是一些被困在JAVA_HOME/lib/ext中的东西?

我想你应该将GRAIL_HOME变量声明为系统变量你安装了什么插件?你是说GRAILS_HOME,是的,它已经设置好了,否则你甚至不能运行GRAILS。至于插件,我有很多:应用程序信息、spring安全性、jms、邮件、clover、审计日志、hibernate、Tomcate。您能运行grails依赖性报告吗?如果这不起作用,我建议通过依赖DSL包含插件和JAR,并将“XMLAPI”排除在所有内容之外。请注意,我们在Grails2.0中自动排除了这些麻烦的JAR。我转到我的C:\Users\\\.ivy2\cache dir并打开了org.Grails.internal--runtime.xml文件,果然有来自hibernate core的dom4j的xml api依赖项。我从常春藤缓存中删除了它,暂时一切又恢复正常了。您是否尝试过Grails1.4或2.0,然后切换回Grails1.3?如果是这样,那可能就是问题的原因。在这种情况下,一个可靠的解决方案是将
排除“xml API”,“commons digester”
添加到
继承“全局”
块。Peter,非常感谢您的评论和建议。在BuildConfig中添加excludes(“xmlapi”、“commons digester”)确实解决了这个问题。当具有相同代码库的其他机器没有这个问题时,我仍然对这种依赖性是如何潜入其中感到困惑。据我所知,我没有升级grails版本,我们的版本是1.3.7