2010-12-30 6 views
1

Ich schreibe eine Klasse zum Ausführen von xjc in Java. Mein Code lautet wie folgt:SchemaCompiler bind() gibt null zurück

SchemaCompiler sc = XJC.createSchemaCompiler(); 
URL url = new URL("file://E:\\JAXB\\books.xsd"); 
sc.parseSchema(new InputSource(url.toExternalForm())); 
S2JJAXBModel model = sc.bind(); 
JCodeModel cm = model.generateCode(null, null); 
cm.build(new FileCodeWriter(new File("E:\\JAXBTest"))); 

Ich bekomme Modell als null, wenn ich dies ausführen.

Kann mir jemand helfen oder einen Link zur Verfügung stellen, wo ich das wissen kann.

+0

sc.bind gibt null zurück – simran

+0

Sie haben diese Frage bereits gestellt, warum fragen Sie sie noch einmal? http://stackoverflow.com/questions/4561480/how-to-use-jaxb-apis-to-generate-classes-from-xsd – skaffman

+0

bcoz no 1 antwortete thr :( – simran

Antwort

2

Wenn Sie in der SchemaCompiler API für bind() Methode aussehen heißt es:

bind() den Wert null zurück, wenn die Kompilation ausfällt. Die Fehler sollten in diesem Fall an den registrierten Fehler Handler übermittelt worden sein.

So müssen Sie einen Fehler Zuhörer wie dies mit SchemaCompiler.setErrorListener() mit etwas registrieren:

sc.setErrorListener(new ErrorListener(){ 
    public void error(SAXParseException exception){ 
    exception.printStackTrace(); 
    } 
}); 

Und hoffentlich werden Sie mehr Informationen bekommen, was schief läuft.

+0

Nein nichts nach dem Hinzufügen auch – simran

+0

stellen Sie sicher, dass Sie es vor dem Parsen des Schemas und der Bindung hinzufügen.Wenn noch nichts, versuchen Sie 'exception.printStackTrace (System.err)', vielleicht std-out wird aus irgendeinem Grund verschluckt. – rodion

+0

Ich muss verpasst haben dieser - ich habe die andere Frage beantwortet (http://stackoverflow.com/questions/4561480/how-to-use-jaxb-apis-to-generate-classes-from-xsd/4664497#4664497). Wirklich Simran, zwei Stunden ist nicht wirklich realistisch. .. – JesperSM