An XJC compilation error - Could not load class (..) for type cvsversion

I've got a strange compilation error using NetBeans 4.0 (I'd guess the version does not matter here) and Ant 1.6.2. When the following task is executed,

<target name="compile_ofx_schema">

<antcall target="clean-ofx"/>

<delete dir="${ofx-jaxb-src.dir}"/>

<mkdir dir="${ofx-jaxb-src.dir}" />

<xjc schema="${schema.dir}/ofx102.xsd" package="com.xxx.ofx102" target="${ofx-jaxb-src.dir}">

<arg value="-nv" />

<arg value="-extension" />

</xjc>

</target>

I get the error from NetBeans console,

...

Class org.xml.sax.SAXException loaded from parent loader (parentFirst)

Class java.io.IOException loaded from parent loader (parentFirst)

D:\appserver\build.xml:797: unable to parse the schema. Error messages should have been provided

at com.sun.tools.xjc.XJCTask._doXJC(XJCTask.java:334)

at com.sun.tools.xjc.XJCTask.doXJC(XJCTask.java:283)

at com.sun.tools.xjc.XJCTask.execute(XJCTask.java:227)

at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)

at org.apache.tools.ant.Task.perform(Task.java:364)

at org.apache.tools.ant.Target.execute(Target.java:341)

at org.apache.tools.ant.Target.performTasks(Target.java:369)

at org.apache.tools.ant.Project.executeTarget(Project.java:1214)

at org.apache.tools.ant.Project.executeTargets(Project.java:1062)

at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:217)

at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:236)

at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:125)

BUILD FAILED (total time: 4 seconds)

Could not load class (org.apache.tools.ant.tasksdefs.cvslib.CvsVersion) for type cvsversion

Could not load class (org.apache.tools.ant.tasksdefs.cvslib.CvsVersion) for type cvsversion

And when I run the Ant task from the command line, I don't get the error at all.

Any help is greatly appreciated.

[2076 byte] By [Diginsitea] at [2007-11-26 15:18:13]
# 1

Please refer to:

http://forum.java.sun.com/thread.jspa?forumID=747&threadID=5056961

Looks like this is an ant bug.

A bug has been filed against ant1.6.2:

http://issues.apache.org/bugzilla/show_bug.cgi?id=31403

- The bug report says the fix is available in the next version. You can try downloading a later 1.6.x (x > 2)version and use it in the ide. (You will need to replace <idedir>/ant/lib/ant.jar).

- Alternatively you can:

- unjar <bowdir>/ant/lib/ant.jar

- edit org/apache/tools/ant/taskdefs/defaults.properties

change the line cvsversion=org.apache.tools.ant.tasksdefs.cvslib.CvsVersion

by changing tasksdefs to taskdef

- jar the files back and put the new ant.jar in <bowdir>/ant/lib.

Does that help?

Also, as you mentioned, the ide version should not matter; but still you may want to upgrade to the latest NetBeans 5.5, since it has a lot many features.

KarthikRa at 2007-7-8 11:00:41 > top of Java-index,Development Tools,Java Tools...
# 2

That was a great finding from you. Thank you.

I followed your alternative approach and updated the ant.jar file. The "Could not load class..." error went away but the stack trace still remains. Now I am clueless again since I have ant on the debug mode and can't find any more useful info.

Class com.sun.tools.xjc.reader.internalizer.LocatorTable loaded from ant loader (parentFirst)

Class java.util.HashSet loaded from parent loader (parentFirst)

Class javax.xml.parsers.DocumentBuilderFactory loaded from parent loader (parentFirst)

Couldn't load Resource org/netbeans/core/xml/DOMFactoryImpl.class

Couldn't load ResourceStream for META-INF/services/javax.xml.parsers.DocumentBuilderFactory

Class org.apache.crimson.jaxp.DocumentBuilderFactoryImpl loaded from parent loader (parentFirst)

Class javax.xml.parsers.SAXParserFactory loaded from parent loader (parentFirst)

Couldn't load Resource org/netbeans/core/xml/SAXFactoryImpl.class

Couldn't load ResourceStream for META-INF/services/javax.xml.parsers.SAXParserFactory

Class org.apache.crimson.jaxp.SAXParserFactoryImpl loaded from parent loader (parentFirst)

Class javax.xml.parsers.DocumentBuilder loaded from parent loader (parentFirst)

Class java.util.Map loaded from parent loader (parentFirst)

Class javax.xml.parsers.SAXParser loaded from parent loader (parentFirst)

Finding class com.sun.tools.xjc.reader.xmlschema.parser.XMLSchemaInternalizationLogic$Referen ceFinder

Loaded from D:\bbw\build\Common_3.6\Packaged\appserver\lib\jaxb\jaxb-xjc.jar com/sun/tools/xjc/reader/xmlschema/parser/XMLSchemaInternalizationLogic$Referen ceFinder.class

Finding class com.sun.tools.xjc.reader.internalizer.AbstractReferenceFinderImpl

Loaded from D:\bbw\build\Common_3.6\Packaged\appserver\lib\jaxb\jaxb-xjc.jar com/sun/tools/xjc/reader/internalizer/AbstractReferenceFinderImpl.class

Class org.xml.sax.helpers.XMLFilterImpl loaded from parent loader (parentFirst)

Class com.sun.tools.xjc.reader.internalizer.AbstractReferenceFinderImpl loaded from ant loader (parentFirst)

Class com.sun.tools.xjc.reader.xmlschema.parser.XMLSchemaInternalizationLogic$Referen ceFinder loaded from ant loader (parentFirst)

Class org.xml.sax.XMLFilter loaded from parent loader (parentFirst)

Finding class com.sun.tools.xjc.reader.internalizer.VersionChecker

Loaded from D:\bbw\build\Common_3.6\Packaged\appserver\lib\jaxb\jaxb-xjc.jar com/sun/tools/xjc/reader/internalizer/VersionChecker.class

Class com.sun.tools.xjc.reader.internalizer.VersionChecker loaded from ant loader (parentFirst)

Finding class com.sun.tools.xjc.reader.internalizer.DOMBuilder

Loaded from D:\bbw\build\Common_3.6\Packaged\appserver\lib\jaxb\jaxb-xjc.jar com/sun/tools/xjc/reader/internalizer/DOMBuilder.class

Finding class com.sun.xml.bind.marshaller.SAX2DOMEx

Loaded from D:\bbw\build\Common_3.6\Packaged\appserver\lib\jaxb\jaxb-impl.jar com/sun/xml/bind/marshaller/SAX2DOMEx.class

Class org.xml.sax.ContentHandler loaded from parent loader (parentFirst)

Class com.sun.xml.bind.marshaller.SAX2DOMEx loaded from ant loader (parentFirst)

Class com.sun.tools.xjc.reader.internalizer.DOMBuilder loaded from ant loader (parentFirst)

Class java.util.Stack loaded from parent loader (parentFirst)

Class org.w3c.dom.Document loaded from parent loader (parentFirst)

Class org.xml.sax.XMLReader loaded from parent loader (parentFirst)

Class org.w3c.dom.Node loaded from parent loader (parentFirst)

Class org.w3c.dom.Element loaded from parent loader (parentFirst)

Class javax.xml.parsers.ParserConfigurationException loaded from parent loader (parentFirst)

Class org.xml.sax.SAXException loaded from parent loader (parentFirst)

Class java.io.IOException loaded from parent loader (parentFirst)

D:\bbw\build\Common_3.6\Packaged\appserver\build.xml:799: unable to parse the schema. Error messages should have been provided

at com.sun.tools.xjc.XJCTask._doXJC(XJCTask.java:334)

at com.sun.tools.xjc.XJCTask.doXJC(XJCTask.java:283)

at com.sun.tools.xjc.XJCTask.execute(XJCTask.java:227)

at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)

at org.apache.tools.ant.Task.perform(Task.java:364)

at org.apache.tools.ant.Target.execute(Target.java:341)

at org.apache.tools.ant.Target.performTasks(Target.java:369)

at org.apache.tools.ant.Project.executeTarget(Project.java:1214)

at org.apache.tools.ant.Project.executeTargets(Project.java:1062)

at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:217)

at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:236)

at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:125)

BUILD FAILED (total time: 1 second)

Any suggestions? BTW, I did not upgrade NetBeans to v5.5 due that my code is still JDK1.4 based.

Diginsitea at 2007-7-8 11:00:41 > top of Java-index,Development Tools,Java Tools...
# 3

I think this error most likely indicates a version incompatibility with the xml parser that is being used. The trouble is usually with xerces or xalan; if there are different versions of these libraries in the system being used by the different entities (appserver, ide, ant and system classpath itself), then this problem could arise. Sometimes removing the xml parser from the jdk's endorsed directory may help....

KarthikRa at 2007-7-8 11:00:41 > top of Java-index,Development Tools,Java Tools...
# 4

xml parser version incompatibility is a hard problem to debug and diagnose.

by the way, from the error message it seems that classes needed for xjc are being loaded from D:\bbw\build\Common_3.6\Packaged\appserver\lib\jaxb\jaxb-xjc.jar by ant; is it because this jar is in the classpath prior to ant's jar itself? Can you temporarily rename the one in appserver/lib to some other name and see what the behaviour is?

KarthikRa at 2007-7-8 11:00:41 > top of Java-index,Development Tools,Java Tools...
# 5

I renamed the lib but IDE Ant picked it up anyway. So I moved the .jar to the temp dir. And I got the following as I suspected,

fileset: Setup scanner in dir E:\MIBS\build\Common_3.6\Packaged\appserver\lib\jaxb with patternSet{ includes: [*.jar] excludes: [] }

fileset: Setup scanner in dir E:\MIBS\build\Common_3.6\Packaged\appserver\lib with patternSet{ includes: [${jaxpapi.jar}] excludes: [] }

Finding class com.sun.tools.xjc.XJCTask

BUILD FAILED

E:\MIBS\build\flypaper\build.xml:771: taskdef class com.sun.tools.xjc.XJCTask cannot be found

at org.apache.tools.ant.taskdefs.Definer.addDefinition(Definer.java:483)

at org.apache.tools.ant.taskdefs.Definer.execute(Definer.java:183)

at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)

at org.apache.tools.ant.Task.perform(Task.java:364)

at org.apache.tools.ant.Target.execute(Target.java:341)

at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:142)

at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.parseBuildFile(Interna lAntRunner.java:191)

at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner. java:400)

at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner .java:137)

Caused by: java.lang.ClassNotFoundException: com.sun.tools.xjc.XJCTask

at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1 166)

at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1107)

at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:977)

at java.lang.ClassLoader.loadClass(ClassLoader.java:235)

at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:219)

at org.apache.tools.ant.taskdefs.Definer.addDefinition(Definer.java:457)

... 8 more

I could not find a .jar file in the Ant package that defines this task though. And in the MANIFEST.MF file I saw this,

Manifest-Version: 1.0

Sealed: true

Implementation-Version: 1.0.2

Specification-Title: Java Architecture for XML Binding

Specification-Version: 1.0

Ant-Version: Apache Ant 1.5.2

Implementation-Title: JAXB Reference Implementation

Main-Class: com.sun.tools.xjc.Driver

Extension-Name: com.sun.tools.xjc

Created-By: 1.4.1_02-b06 (Sun Microsystems Inc.)

Class-Path: jaxb-api.jar jaxb-impl.jar jaxb-libs.jar ../../jaxp/lib/en

dorsed/sax.jar ../../jaxp/lib/endorsed/dom.jar ../../jaxp/lib/jaxp-ap

i.jar ../../jaxp/lib/endorsed/xercesImpl.jar ../../jaxp/lib/endorsed/

xalan.jar ../../jwsdp-shared/lib/jax-qname.jar ../../jwsdp-shared/lib

/namespace.jar ../../jwsdp-shared/lib/xsdlib.jar ../../jwsdp-shared/l

ib/relaxngDatatype.jar

Implementation-Vendor-Id: com.sun

Implementation-Vendor: Sun Microsystems, Inc.

Specification-Vendor: Sun Microsystems, Inc.

Not sure if there is any incompatibility between Ant 1.5.2 and 1.6.5 (that comes with NetBeans). Note that I upgraded my NetBeans to 5.0.

You're right. Debugging this kind of errors really pulled my hair out for the last few days (thankfully I still have a command line build to fall back on). (BTW, I tried and got exactly the same error on Eclipse 3.2.1). Therefore I truly appreciate your willingness to help me dig into it.

Diginsitea at 2007-7-8 11:00:41 > top of Java-index,Development Tools,Java Tools...
# 6

I had a break through last night. Apparently I've been using Ant 1.7.0 on command line compilation but 1.6.5 with NetBeans/Eclipse. I did not think this was a factor. But when I switched Ant from 1.6.5 to 1.7.0 in Eclipse, the compilation went through successfully. I still have no idea what the subtlety is though, unfortunately.

I also changed the Ant version in NetBeans. Everything started working. I guess I'll move on since I've spent enough time on this hair-splitting issue. Thanks again for your help.

Diginsitea at 2007-7-8 11:00:41 > top of Java-index,Development Tools,Java Tools...
# 7
Glad to note that your problem is resolved.> I renamed the lib but IDE Ant picked it up anyway...That is really strange. In any case, i do agree with you that it is probably not worth spending time to figure out the subtlety.
KarthikRa at 2007-7-8 11:00:41 > top of Java-index,Development Tools,Java Tools...