Problema para gerar schema com JAXB

5 respostas
BLV_DOOM_JAVA
Pessoal, eu estou tendo problemas para gerar Schema com JAXB... segue o código:
package br.com.caelum.fj31.jaxb;

import java.io.File;
import java.io.IOException;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.SchemaOutputResolver;
import javax.xml.transform.Result;
import javax.xml.transform.stream.StreamResult;

public class TesteGeraSchema {
	
	public static void main(String[] args) throws Exception {
		JAXBContext context = JAXBContext.newInstance(Produto.class);
		context.generateSchema(new SchemaOutputResolver() {
			@Override
			public Result createOutput(String namespaceUri, String suggestedFileName)
					throws IOException {
				StreamResult result = new StreamResult(new File("teste.xsd")); 
				return result;
			}
		});
	}

}
eis a mensagem:
06/07/2012 23:47:14 com.sun.xml.internal.bind.v2.schemagen.XmlSchemaGenerator$Namespace writeTo
INFO: java.io.FileNotFoundException: C:\Users\Bruno%20Luiz%20Viana\workspace-fj31\fj31-jaxb-standalone\teste.xsd (O sistema não pode encontrar o caminho especificado)
com.sun.xml.internal.txw2.TxwException: java.io.FileNotFoundException: C:\Users\Bruno%20Luiz%20Viana\workspace-fj31\fj31-jaxb-standalone\teste.xsd (O sistema não pode encontrar o caminho especificado)
	at com.sun.xml.internal.txw2.output.StreamSerializer.<init>(Unknown Source)
	at com.sun.xml.internal.txw2.output.ResultFactory.createSerializer(Unknown Source)
	at com.sun.xml.internal.bind.v2.schemagen.XmlSchemaGenerator$Namespace.writeTo(Unknown Source)
	at com.sun.xml.internal.bind.v2.schemagen.XmlSchemaGenerator$Namespace.access$700(Unknown Source)
	at com.sun.xml.internal.bind.v2.schemagen.XmlSchemaGenerator.write(Unknown Source)
	at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.generateSchema(Unknown Source)
	at br.com.caelum.fj31.jaxb.TesteGeraSchema.main(TesteGeraSchema.java:15)
Caused by: java.io.FileNotFoundException: C:\Users\Bruno%20Luiz%20Viana\workspace-fj31\fj31-jaxb-standalone\teste.xsd (O sistema não pode encontrar o caminho especificado)
	at java.io.FileOutputStream.open(Native Method)
	at java.io.FileOutputStream.<init>(Unknown Source)
	at java.io.FileOutputStream.<init>(Unknown Source)
	... 7 more
Exception in thread "main" java.io.IOException: java.io.FileNotFoundException: C:\Users\Bruno%20Luiz%20Viana\workspace-fj31\fj31-jaxb-standalone\teste.xsd (O sistema não pode encontrar o caminho especificado)
	at com.sun.xml.internal.bind.v2.schemagen.XmlSchemaGenerator$Namespace.writeTo(Unknown Source)
	at com.sun.xml.internal.bind.v2.schemagen.XmlSchemaGenerator$Namespace.access$700(Unknown Source)
	at com.sun.xml.internal.bind.v2.schemagen.XmlSchemaGenerator.write(Unknown Source)
	at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.generateSchema(Unknown Source)
	at br.com.caelum.fj31.jaxb.TesteGeraSchema.main(TesteGeraSchema.java:15)

Alguém sabe o porque disso...
Na minha concepção o arquivo deveria ser gerado...pq não gera?
Eu ja tentei deixar o arquivo criado...mas não funfou...

Alguém sabe me ajudar?

Obrigado!

5 Respostas

BLV_DOOM_JAVA

Alguém pode me dar uma luz?
Eu ja pesquisei na net e todos os exemplos que vi estão desse jeito…
É algum tipo de bug?

nel

O seu bug é esse aqui:

java.io.FileNotFoundException: C:\Users\Bruno%20Luiz%20Viana\workspace-fj31\fj31-jaxb-standalone\teste.xsd (O sistema não pode encontrar o caminho especificado)

Simplesmente não encontrou o arquivo XSD.

BLV_DOOM_JAVA

nel:
O seu bug é esse aqui:

java.io.FileNotFoundException: C:\Users\Bruno%20Luiz%20Viana\workspace-fj31\fj31-jaxb-standalone\teste.xsd (O sistema não pode encontrar o caminho especificado)

Simplesmente não encontrou o arquivo XSD.

Mas ai que esta…
era para ele criar esse arquivo…
de qualquer forma…eu criei um arquivo nesse diretório e ele continuou dando erro.

Eu consegui gerar o .xsd utilizando o comando de linha de código schemagen…mas pelo eclipse não estou conseguindo…
Isso é muito estranho.

nel

Altera isso:

public Result createOutput(String namespaceUri, String suggestedFileName)  
                    throws IOException {  
                StreamResult result = new StreamResult(new File("teste.xsd"));   
                return result;  
            }

para isso:

File baseDir = new File(".")
 public Result createOutput(String namespaceUri, String suggestedFileName)  
                    throws IOException {  
                return new StreamResult(new File(baseDir, "teste.xsd"));   
            }

Dá uma olhada aqui: http://jaxb.java.net/guide/Invoking_schemagen_programatically.html[code]

Senão funcionar, leia o site oficial do JAXB e procure pelo o que precisa. Deve ser um pequeno detalhe.
Tem dois links que lhe recomendo:

1 - [url]http://jaxb.java.net/[/url]

2 - [url]http://www.oracle.com/technetwork/articles/javase/index-140168.html[/url]

O primeiro é mais amplo, tem tutorial e exemplos.

BLV_DOOM_JAVA

[quote=nel]Altera isso:

public Result createOutput(String namespaceUri, String suggestedFileName)  
                    throws IOException {  
                StreamResult result = new StreamResult(new File("teste.xsd"));   
                return result;  
            }

para isso:

File baseDir = new File(".")
 public Result createOutput(String namespaceUri, String suggestedFileName)  
                    throws IOException {  
                return new StreamResult(new File(baseDir, "teste.xsd"));   
            }
Dá uma olhada aqui: http://jaxb.java.net/guide/Invoking_schemagen_programatically.html
Senão funcionar, leia o site oficial do JAXB e procure pelo o que precisa. Deve ser um pequeno detalhe.
Tem dois links que lhe recomendo:

1 - [url]http://jaxb.java.net/[/url]

2 - [url]http://www.oracle.com/technetwork/articles/javase/index-140168.html[/url]

O primeiro é mais amplo, tem tutorial e exemplos.[/quote]
[quote][/quote]

Vlw cara, mas tbm não funfou...
[code]07/07/2012 12:10:19 com.sun.xml.internal.bind.v2.schemagen.XmlSchemaGenerator$Namespace writeTo
INFO: java.io.FileNotFoundException: C:\Users\Bruno%20Luiz%20Viana\workspace-fj31\fj31-jaxb-standalone\.\schema1.xsd (O sistema não pode encontrar o caminho especificado)
com.sun.xml.internal.txw2.TxwException: [b]java.io.FileNotFoundException: C:\Users\Bruno%20Luiz%20Viana\workspace-fj31\fj31-jaxb-standalone\.\schema1.xsd[/b] (O sistema não pode encontrar o caminho especificado)
	at com.sun.xml.internal.txw2.output.StreamSerializer.<init>(Unknown Source)
	at com.sun.xml.internal.txw2.output.ResultFactory.createSerializer(Unknown Source)
	at com.sun.xml.internal.bind.v2.schemagen.XmlSchemaGenerator$Namespace.writeTo(Unknown Source)
	at com.sun.xml.internal.bind.v2.schemagen.XmlSchemaGenerator$Namespace.access$700(Unknown Source)
	at com.sun.xml.internal.bind.v2.schemagen.XmlSchemaGenerator.write(Unknown Source)
	at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.generateSchema(Unknown Source)
	at br.com.caelum.fj31.jaxb.TesteGeraSchema.main(TesteGeraSchema.java:15)
Caused by: java.io.FileNotFoundException: C:\Users\Bruno%20Luiz%20Viana\workspace-fj31\fj31-jaxb-standalone\.\schema1.xsd (O sistema não pode encontrar o caminho especificado)
	at java.io.FileOutputStream.open(Native Method)
	at java.io.FileOutputStream.<init>(Unknown Source)
	at java.io.FileOutputStream.<init>(Unknown Source)
	... 7 more
Exception in thread "main" java.io.IOException: java.io.FileNotFoundException: C:\Users\Bruno%20Luiz%20Viana\workspace-fj31\fj31-jaxb-standalone\.\schema1.xsd (O sistema não pode encontrar o caminho especificado)
	at com.sun.xml.internal.bind.v2.schemagen.XmlSchemaGenerator$Namespace.writeTo(Unknown Source)
	at com.sun.xml.internal.bind.v2.schemagen.XmlSchemaGenerator$Namespace.access$700(Unknown Source)
	at com.sun.xml.internal.bind.v2.schemagen.XmlSchemaGenerator.write(Unknown Source)
	at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.generateSchema(Unknown Source)
	at br.com.caelum.fj31.jaxb.TesteGeraSchema.main(TesteGeraSchema.java:15)

Eu ja tinha visto esse tutoriais...
Eu vi na net que essa API tinha um bug...não sei se é esse...de qualquer forma obrigado.

Eu instalei um plugin no meu eclipse e rodei para gerar o .xsd.
Como o meu foco não é gerar o xsd na aplicação e sim apenas o XML e transformar o XML em objeto (o que etsa funcionando bem) eu vou deixar esse assunto na lista das proximas pesquisas e vou prossguir.

Muito obrigado pela ajuda.
Mas se alguém souber de algo pode postar pois isso esta me deixando com uma pulga atras da orelha.

Criado 6 de julho de 2012
Ultima resposta 7 de jul. de 2012
Respostas 5
Participantes 2