问题
Possibly related: 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:
There is no answer to this question. Just don't use XOM with Grails; XmlSlurper and GPath are comparable.
回答2:
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.
回答3:
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.
来源:https://stackoverflow.com/questions/2770819/grails-xom-linkageerror-saxparserexception