Hi again All, I posted 24 hours ago (included below) about a problem with xerces.
I probably should have kept it short and sweet to attract a reply, so I'm going to try that now: how can I set up and run a task as a goal with a later version of xerces xml parser? None of the solutions out in doc/google-land have worked for me, e.g. forking, defining classpaths etc. Thanks for any advice, Adam -----Original Message----- From: Adam Hardy Sent: 24 February 2005 13:03 To: users@maven.apache.org Subject: xercesImpl and alternately XmlChars or OutputFormat I have a problem setting up Sun's JAXB xml binding as an ant task in my maven.xml. I have scoured google, the mailing list archives and the maven documentation, and now after 2 days I think I need some outside help! I already found that some people set up a maven plugin for JAXB, which I tried, but I get the same failure. In my goal I have declared the JAXB task that I wish to run and have tried various combinations of classpaths which result in various NoClassDefFoundError being thrown. I see there have been problems before with xerces because of maven's in-built dependence on xerces 2.x. For JAXB 1.5 I need to use xercesImpl-2.6.2 >From the mailing list messages on the subject, I think I need maven to give me a context without any reference to its own version of xerces. I tried including fork="true", and referencing classpath declarations for the ant:taskdef, but I still get the NoClassDefFoundError for the xercesImpl class: java.lang.NoClassDefFoundError: com/sun/org/apache/xml/internal/serialize/OutputFormat This is my maven.xml: <goal name="jaxb"> <!-- define an jaxb xjc task to generate schema-based .java files --> <ant:taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask" fork="true"> <ant:classpath> <ant:pathelement location="${pom.getDependencyPath('jaxb:jaxb-xjc')}"/> <ant:pathelement location="${pom.getDependencyPath('jaxb:jaxb-libs')}"/> <ant:pathelement location="${pom.getDependencyPath('jaxb:jaxb-impl')}"/> <ant:pathelement location="${pom.getDependencyPath('xsdlib:xsdlib')}"/> <ant:pathelement location="${pom.getDependencyPath('relaxng:relaxngDatatype')}"/> <ant:pathelement location="${pom.getDependencyPath('namespace:jax-qname')}"/> <ant:pathelement location="${pom.getDependencyPath('jaxb:jaxb-api')}"/> <ant:pathelement location="${pom.getDependencyPath('namespace:namespace')}"/> <ant:pathelement location="${pom.getDependencyPath('xerces:xercesImpl')}"/> </ant:classpath> </ant:taskdef> [snipped out some variable manipulation................] <ant:xjc schema="conf/${jaxb.schema}" target="src" package="${jaxb.destination}" fork="true"> <ant:pathelement location="${pom.getDependencyPath('xerces:xercesImpl')}"/> </ant:xjc> </goal> I don't know how to get a context free from references to maven's xerces version. My attempts have all failed with various results. Firstly if I put the xercesImpl jar on the classpath as a pathelement as above, or if I leave it out, it makes no difference. Then if I tell maven to run java:compile first (advice in a msg on the mailing list) by setting up a preGoal, I get a different error: java.lang.NoClassDefFoundError: com/sun/xml/util/XmlChars at com.sun.tools.xjc.reader.internalizer.WhitespaceStripper.processPendingT ext(WhitespaceStripper.java:91) However XmlChars is in xsdlib.jar, which I have put on the classpath as you can see above. This is the most confusing bit because it seems a simple issue, but I can't see what to do. If I include the whole dependency classpath like this: <ant:path refid="maven.dependency.classpath"/> it makes no difference either. If anyone can provide any advice, I'd be grateful. Regards Adam http://www.bbc.co.uk/ This e-mail (and any attachments) is confidential and may contain personal views which are not the views of the BBC unless specifically stated. If you have received it in error, please delete it from your system. Do not use, copy or disclose the information in any way nor act in reliance on it and notify the sender immediately. Please note that the BBC monitors e-mails sent or received. Further communication will signify your consent to this. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://www.bbc.co.uk/ This e-mail (and any attachments) is confidential and may contain personal views which are not the views of the BBC unless specifically stated. If you have received it in error, please delete it from your system. Do not use, copy or disclose the information in any way nor act in reliance on it and notify the sender immediately. Please note that the BBC monitors e-mails sent or received. Further communication will signify your consent to this. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]