I'm running into trouble with having multiple class with the same path (i.e. same name, same package!!!).
For some reason, gwt-dev comes with its own version of org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
and javax.xml.parsers.DocumentBuilderFactory
.
At the same time, spring also depends on these classes but from different jar. I don't know what should be, but look like xalan
& xml-api
are the two dependencies that spring depends on (these dependency are optional)
Funny thing is that eclipse can run the same code (it's a unit test) without problem, but surefire cannot. So I guess the problem is due to the way each runner consider the priority of each jar.
Now come to the question: How can I setup my POM so that I can sure that when ever any code running inside my app, then class from a jar will be selected over class from other jar?
Thanks.
Since Maven 2.0.9, Maven uses the order of dependencies in the POM to build the classpath so you can manipulate it. Just declare the "right" jar first and your app will pick the class from it.
From the release notes of maven 2.0.9:
To know which jar is causing you problems: run Maven with -X flag.
To setup your POM to exclude relevant jar(s):
...
dependencies within maven projects can be a hassle to troubleshoot. what i normally do is...
hope this helps!