2010-11-29 24 views
1

J'apprends JAXb 2.0 et je suis nouveau dans ce domaine.création de XSD en utilisant jaxb schemagen

je suis en train de générer XSD basé sur les classes y POJO en utilisant schemagen et pour les classes simples, il fonctionne très bien, mais quand ma classe contient refrence à d'autres classes

schemagen me donne erreur ci-dessous est la trace d'erreur pour la même

Problème rencontré lors du traitement des annotations; voir pile ci-dessous pour plus d'informations.

java.lang.NullPointerException 
     at com.sun.tools.jxc.model.nav.APTNavigator$2.onDeclaredType(APTNavigator.java:436) 
     at com.sun.tools.jxc.model.nav.APTNavigator$2.onClassType(APTNavigator.java:410) 
     at com.sun.tools.jxc.model.nav.APTNavigator$2.onClassType(APTNavigator.java:464) 
     at com.sun.istack.tools.APTTypeVisitor.apply(APTTypeVisitor.java:27) 
     at com.sun.tools.jxc.model.nav.APTNavigator.getBaseClass(APTNavigator.java:113) 
     at com.sun.tools.jxc.model.nav.APTNavigator.getBaseClass(APTNavigator.java:89) 
     at com.sun.xml.bind.v2.model.impl.PropertyInfoImpl.getIndividualType(PropertyInfoImpl.java:195) 
     at com.sun.xml.bind.v2.model.impl.PropertyInfoImpl.<init>(PropertyInfoImpl.java:137) 
     at com.sun.xml.bind.v2.model.impl.MapPropertyInfoImpl.<init>(MapPropertyInfoImpl.java:71) 
     at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.createMapProperty(ClassInfoImpl.java:928) 
     at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.addProperty(ClassInfoImpl.java:885) 
     at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.findGetterSetterProperties(ClassInfoImpl.java:1004) 
     at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.getProperties(ClassInfoImpl.java:314) 
     at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:247) 
     at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:213) 
     at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:319) 
     at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:334) 
     at com.sun.tools.xjc.api.impl.j2s.JavaCompilerImpl.bind(JavaCompilerImpl.java:94) 
     at com.sun.tools.jxc.apt.SchemaGenerator$1.process(SchemaGenerator.java:119) 
     at com.sun.mirror.apt.AnnotationProcessors$CompositeAnnotationProcessor.process(AnnotationProcessors.java:60) 
     at com.sun.tools.apt.comp.Apt.main(Apt.java:454) 
     at com.sun.tools.apt.main.JavaCompiler.compile(JavaCompiler.java:258) 
     at com.sun.tools.apt.main.Main.compile(Main.java:1102) 
     at com.sun.tools.apt.main.Main.compile(Main.java:964) 
     at com.sun.tools.apt.Main.processing(Main.java:95) 
     at com.sun.tools.apt.Main.process(Main.java:85) 
     at com.sun.tools.apt.Main.process(Main.java:67) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
     at java.lang.reflect.Method.invoke(Unknown Source) 
     at com.sun.tools.jxc.SchemaGenerator$Runner.main(SchemaGenerator.java:245) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
     at java.lang.reflect.Method.invoke(Unknown Source) 
     at com.sun.tools.jxc.SchemaGenerator.run(SchemaGenerator.java:177) 
     at com.sun.tools.jxc.SchemaGenerator.run(SchemaGenerator.java:81) 
     at com.sun.tools.jxc.SchemaGenerator.main(SchemaGenerator.java:73) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
     at java.lang.reflect.Method.invoke(Unknown Source) 
     at com.sun.tools.jxc.SchemaGeneratorFacade.main(SchemaGeneratorFacade.java:60) 
C:\Users\Desktop\jaxb\jaxb-ri-20101119\bin\src\com\tr\model\destination\Destination.java:9: package com.tr.model.address does not exist 
import com.tr.model.address.BasicAddress;[code] 

ci-dessous est le détail de ma structure de dossier

schemagen est situé à l'emplacement suivant

C:\Users\Desktop\jaxb\jaxb-ri-20101119\bin 

Ma classe Java basée sur que je suis en train de générer xsd est à l'emplacement suivant

C:\Users\Desktop\jaxb\jaxb-ri-20101119\bin\src\com\tr\model\destination 

Destination.java

alors que toutes les autres classes étant refrenced de destination, ainsi que la classe elle-même sont à l'intérieur de la structure suivante

C:\Users\Raisonne\Desktop\jaxb\jaxb-ri-20101119\bin\src\com\raisonne\tr\model 

Je sais que le problème est avec le réglage de classpath, mais je suis incapable de le comprendre ho set CLASSPATH correct pour ce cas

j'ai essayé de configurer la variable CLASSPATH du système à la valeur de

C:\Users\Raisonne\Desktop\jaxb\jaxb-ri-20101119\bin\src\com\raisonne\tr\model as well other 2 mentioned in my post but nothing worked out. 

peut me aider à établir classpath pour la schemagen.

merci à l'avance

Umesh

Répondre

0

il semble que vous avez défini la déclaration de package de votre classe à

com.tr.model.address 

où il devrait être de votre structure dir

com.tr.model.destination 
+0

adresse est une seule erreur que j'ai coupé la trace de l'erreur quelle que soit la classe que je suis en train de refaire dans mes desinati sur la classe est sous erreur/exception –

+0

@umesh, comment avez-vous exécuté ce schemagen? et êtes-vous capable de compiler toutes ces sources? –

+0

c'est ce que j'essayais de faire lors de la définition du chemin de classe en utilisant le schéma système variable d'environnement C: \ Users \ Desktop \ jaxb \ jaxb-ri-20101119 \ bin \ src \ com \ tr \ modèle \ destination \ Destination.java et oui quand il n'y avait pas de réfrence à d'autres classes mon Destination.java était respecté mais dans ce cas aucun fichier de classe n'est généré –