关于xerces:处理依赖项解析的Groovy Grape

Groovy Grape dealing with dependency resolution

我试图在groovy脚本中使用org.xhtmlrenderer:core-renderer:R8pre2,但我得到一个Linkage错误:

1
2
3
4
5
6
7
Caught: java.lang.LinkageError: loader constraint violation in interface
itable initialization: when resolving method  
"org.apache.xerces.dom.NodeImpl.getOwnerDocument()Lorg/w3c/dom/Document;"
the class loader (instance of org/codehaus/groovy/tools/RootLoader) of the
current class, org/apache/xerces/dom/NodeImpl, and the class loader (instance of
<bootloader>) for interface org/w3c/dom/Node have different Class objects for  
the type getOwnerDocument used in the signature

我已经google了很多,发现了很多这样的答案:

在Java / Maven中处理"Xerces hell"?

XercesImpl与JavaSE 6的内部xerces实现相冲突。 两者都需要......可以做些什么?

因此,一种解决方案可能是使用javas endorsed机制来解决冲突,但我想让我的脚本独立于这样的"解决方法"。 该脚本应该是开箱即用的。

接下来我尝试的是排除这样的正确依赖

1
2
3
4
@Grapes([
    @Grab('org.xhtmlrenderer:core-renderer:R8pre2'),
    @GrabExclude('xml-apis:xml-apis')
])

但没有成功......

有任何想法吗?

PS:这是创建错误的脚本:

1
2
3
4
5
6
7
8
9
@Grapes([
    @Grab('org.xhtmlrenderer:core-renderer:R8pre2'),
])
import org.w3c.dom.Document
import javax.xml.parsers.DocumentBuilder
import javax.xml.parsers.DocumentBuilderFactory
def dbf = DocumentBuilderFactory.newInstance()
DocumentBuilder builder = dbf.newDocumentBuilder()
Document doc = builder.parse(new ByteArrayInputStream("<html></html>".getBytes()))


Thanx到@dmahapatro,我检查了我的配置,发现我很久以前在{usrhome} /。groovy中放了一些罐子。 删除这些,现在一切都像魅力一样......