Tenía las siguientes clases (todas ellas en el mismo directorio . para simplificar):
Código:
ConjuntoVehiculos
Vehiculo
Furgoneta extends Vehiculo
Coche extends Vehiculo
Entonces al ejecutar:Vehiculo
Furgoneta extends Vehiculo
Coche extends Vehiculo
Código:
schemagen -d . -cp *.java -encoding utf-8
Se me generaba el schema xsd pero me aparecía el siguiente mensaje y no se incluía el elemento Coche en el schema.Citar
ConjuntoVehiculos.java:14: error: cannot find symbol
@XmlElementRef(name = "Coche", type = Coche.class),
^
symbol: class Coche
location: class ConjuntoVehiculos
Esa anotación @XmlElementRef la tengo junto a otras dos que hacen referencia a Vehiculo y Furgoneta y estas otras no producen ningún problema. He comprobado los nombres y está todo bien escrito.@XmlElementRef(name = "Coche", type = Coche.class),
^
symbol: class Coche
location: class ConjuntoVehiculos
He hecho varias pruebas incluyendo los ficheros .java uno por uno y compilándolos primero (aunque por lo que he visto, schemagen debe llamar internamente a javac para compilar los ficheros fuente) pero obtenía más errores y no me generaba el schema.
Al final después de mucho probar me ha dado por compilar los ficheros .java (en el mismo directorio) y ejecutar:
Código:
schemagen -d . -cp . ConjuntoVehiculos.java -encoding utf-8
Con esto sí he conseguido generar el schema correctamente, sin errores e incluyendo todos los elementos pero no entiendo por qué ha funcionado. Es decir, no entiendo cómo funciona schemagen. He buscado en muchas webs y en todas aparece un ejemplo sencillo que funciona con el primer comando que he probado y no se explica nada más.Espero que alguien conozca esta herramienta y pueda ayudarme.

PD: Estoy utilizando schemagen 3.0.0 (recientemente descargado junto con las otras herramientas de JAXB).