Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JAXB Ant Task Error: xjc2 [ERROR] null unknown location

Tags:

java

jaxb

ant

xjc

When binding on some valid XML documents using Ant's xjc2 task, I get the following failure message:

[xjc2] [ERROR] null
[xjc2] unknown location

The documents are very similar to other files which have bound successfully, all imported schemas exist. Running xjc in verbose mode produced:

Parent is not Defined Class...I cannot get the fields from this class

Anyone have any idea what this means?

like image 946
Tom Tresansky Avatar asked Aug 13 '10 15:08

Tom Tresansky


1 Answers

Schema Correctness Check

In our use of XJC we have seen a similar problem (see the link below) that was solved by disabling the schema correctness check:

  • http://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic/JAXBContextFromXMLSchema

Try the following System property to disable the schema correctness check.

-Dcom.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.noCorrectnessCheck=true

For Ant, try:

<xjc target="src">
  <schema dir="src" includes="**/*.xsd" excludes="**/debug.xsd"/>
  <arg value="-nv" />
</xjc>

From the following page the -nv parameter relates to the schema correctness check:

  • http://fisheye5.atlassian.com/browse/~raw,r=1.1/jaxb/www/2.1-ea1/docs/xjcTask.html

Getting into the Code

You could try interacting with XJC programmatically (see below) and plug-in your own EntityResolver to see where the import/include fails:

import com.sun.codemodel.*;
import com.sun.tools.xjc.*;
import com.sun.tools.xjc.api.*;

SchemaCompiler sc = XJC.createSchemaCompiler();
sc.setEntityResolver(new YourEntityResolver());
sc.setErrorListener(new YourErrorListener());
sc.parseSchema(SYSTEM_ID, element);
S2JJAXBModel model = sc.bind();
like image 63
bdoughan Avatar answered Sep 28 '22 04:09

bdoughan