views:

64

answers:

3

Possibly related: http://stackoverflow.com/questions/2762439/grails-attempting-to-include-htppbuilder-linkage-error

I'm trying to include XOM in my grails project. How do I know which dependency library I need to exclude? I'm lost here.

dependencies {
    build('xom:xom:1.1') {
        excludes "xml-apis"
    }
}

Error:

java.lang.LinkageError: loader constraint violation: loader (instance of <bootloader>) previously initiated loading for
a different type with name "org/xml/sax/SAXParseException"
        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:33)
        at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:20)
        at grails.util.PluginBuildSettings.getPluginInfos(PluginBuildSettings.groovy:124)
        at grails.util.PluginBuildSettings.getPluginInfos(PluginBuildSettings.groovy)
        at grails.util.PluginBuildSettings$getPluginInfos.callCurrent(Unknown Source)
        at grails.util.PluginBuildSettings.getPluginInfo(PluginBuildSettings.groovy:160)
        at grails.util.PluginBuildSettings$getPluginInfo.callCurrent(Unknown Source)
        at grails.util.PluginBuildSettings.getPluginInfoForSource(PluginBuildSettings.groovy:195)
        at org.codehaus.groovy.transform.ASTTransformationVisitor$3.call(ASTTransformationVisitor.java:303)
        at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:820)
        at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:513)
        at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:489)
        at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:466)
        at _GrailsEvents_groovy.run(_GrailsEvents_groovy:54)
        at _GrailsEvents_groovy$run.call(Unknown Source)
        at _GrailsArgParsing_groovy$run.call(Unknown Source)
        at _GrailsArgParsing_groovy.run(_GrailsArgParsing_groovy:29)
        at _GrailsArgParsing_groovy$run.call(Unknown Source)
        at _GrailsInit_groovy$run.call(Unknown Source)
        at _GrailsInit_groovy.run(_GrailsInit_groovy:38)
        at _GrailsInit_groovy$run.call(Unknown Source)
        at Help_.run(Help_.groovy:27)
        at Help_$run.call(Unknown Source)
        at gant.Gant.processTargets(Gant.groovy:494)
        at gant.Gant.processTargets(Gant.groovy:480)
+1  A: 

There is no answer to this question. Just don't use XOM with Grails; XmlSlurper and GPath are comparable.

Stefan Kendall
+1  A: 

I got it to work in my project if I put the xom jar into the /lib directory and not use the dependency DSL. I am not sure why this works though.

Jeff Brekke
Useful knowledge, but I refuse to break from dependency management. I find manual lib directories to be a slippery slope to insanity.
Stefan Kendall
A: 

I am having the same problem with XOM. I am trying to rework a servlet app into a grails project and have a bunch of Java classes that I need that use XOM. So it seems that the only way is to manually copy in the file. Sigh.

Terence