Login Registre-se
Gerar DANFE pelo XML  XML
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Autor Mensagem
jjordy1

JavaC Membro

Membro desde: 16/09/2015 09:22:00
Mensagens: 13
Offline

Bom dia galera,

eu estou precisando fazer um gerado de DANFE, eu ate peguei o código daqui e o arquivo danfeR.jrxml.

quando eu rodo o programinha no netbeans ele funciona legal !!! porem quando eu construo o .jar ele da um erro !!

me ajudem ...

erro: net.sf.jasperreports.engine.JRException: Error compiling report java source files: caminho do projeto\dist\danfe_1442407494683_754301.java
java.lang.NullPointerException

já fiz de tudo, pesquisei em todos fórum mas não consigo resolver esse mistério.
rfumiot

JavaC Membro
[Avatar]

Membro desde: 23/06/2015 17:19:55
Mensagens: 217
Offline

bom dia,

tem como você postar o código que você chama o danfeR.jrxml ?
jjordy1

JavaC Membro

Membro desde: 16/09/2015 09:22:00
Mensagens: 13
Offline

claro amigo, rfumiot

segue abaixo:

eu chamo la no meu main esse geral setando o caminho do XML

public class GerandoDanfe {

public void geral(String XML) {
try {
String fileXML = XML;
String xml = lerXML(fileXML);
String logo = "";

byte[] pdf = getDanfe(xml, logo);

String nomeArquivo = XML+".pdf";
FileOutputStream fos = new FileOutputStream(nomeArquivo);
fos.write(pdf);
fos.close();
} catch (Exception e) {
error(e.toString());
}
}

private static String lerXML(String fileXML) throws IOException {
String linha = "";
StringBuilder xml = new StringBuilder();

BufferedReader in = new BufferedReader(new InputStreamReader(
new FileInputStream(fileXML)));
while ((linha = in.readLine()) != null) {
xml.append(linha);
}
in.close();

return xml.toString();
}

public static Document getXml(String xml) {
try {
/**
* Gera um objeto DOM do xml
*/
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = dbf.newDocumentBuilder();
return docBuilder.parse(new ByteArrayInputStream(xml.getBytes()));
} catch (Exception e) {
error("Erro ao formatar a string em xml.");
return null;
}
}

public static Map<String, Object> getFaturas(Document doc) {
Map<String, Object> map = new HashMap<String, Object>();

for (int i = 0; i < doc.getElementsByTagName("dup").getLength(); i++) {
/**
* Seta uma duplicata
*/
Node dup = doc.getElementsByTagName("dup").item(i);

/**
* Seta o numero
*/
Node nDoc = dup.getChildNodes().item(0);
String numero = nDoc.getFirstChild().getNodeValue();
map.put("FAT_NUMERO" + (i + 1), numero);

/**
* Seta a data
*/
Node nData = dup.getChildNodes().item(1);
String data = nData.getFirstChild().getNodeValue();

try {
map.put("FAT_VENCIMENTO" + (i + 1), new SimpleDateFormat("yyyy-MM-dd").parse(data));
} catch (Exception e) {
map.put("FAT_VENCIMENTO" + (i + 1), null);

}

/**
* Seta o valor
*/
Node nValor = dup.getChildNodes().item(2);
String valor = nValor.getFirstChild().getNodeValue();
map.put("FAT_VALOR" + (i + 1), Double.parseDouble(valor));
}
return map;
}

public static byte[] getDanfe(String xml, String logo) {
byte[] pdf = null;
try {
/**
* Documento XML.
*/
Document doc = getXml(xml);

String tipoImp = doc.getElementsByTagName("tpImp").item(0).getFirstChild().getNodeValue();
/**
* Local do relatorio jrxml
*/
String path = System.getProperty("user.dir");

path = path.replace("\\dist", "");

String urlDanfe = tipoImp.equals("1") ? path+"\\danfeR.jrxml" : path+"\\danfeP.jrxml";
JasperDesign jasperDesign = JRXmlLoader.load(urlDanfe);
JasperReport jasper = JasperCompileManager.compileReport(jasperDesign); // Eu creio que o erro é nessa LINHA !!!

/**
* Fonte de Dados.
*/

JRXmlDataSource ds = new JRXmlDataSource(doc, "/nfeProc/NFe/infNFe/det");

/**
* Parametros
*/
Map<String, Object> param = getFaturas(doc);
param.put("Logo", logo);

/**
* Gerando o relatorio
*/



JasperPrint print = JasperFillManager.fillReport(jasper, param, ds);


/**
* Exportando em pdf
*/
pdf = JasperExportManager.exportReportToPdf(print);
} catch (Exception e) {
System.out.println(e.getMessage());
error(e.toString());
pdf = null;
}
return pdf;
}


/**
* Log ERROR.
* @param error
*/
private static void error(String error) {
System.out.println("| ERROR: " + error);
JOptionPane.showMessageDialog(null, error);
}

/**
* Log INFO.
* @param info
*/
private static void info(String info) {
System.out.println("| INFO: " + info);
JOptionPane.showMessageDialog(null, info);
}

}
rfumiot

JavaC Membro
[Avatar]

Membro desde: 23/06/2015 17:19:55
Mensagens: 217
Offline

Então jjordy1,
se for debugando você vai conseguir identificar qual desses objetos estão null;
aparentemente parece ser o jasperDesign que está vindo nulo
ou seja não está conseguindo carregar o danfeR.jrxml

esse danfeR está indo dentro do seu jar?

jjordy1

JavaC Membro

Membro desde: 16/09/2015 09:22:00
Mensagens: 13
Offline


Esta sim !! é tanto que quando eu executo meu programa pelo netbeans ele funciona tranquilo,

esse erro da depois que eu Limpo e Construo o projeto !!

se eu usar o debug não consigo identificar nada, pois o meu programa roda no netbeans !!
jjordy1

JavaC Membro

Membro desde: 16/09/2015 09:22:00
Mensagens: 13
Offline

não tem outra forma de chamar esse relatório ? alguém tem um código ?

uma forma de não ter que copilar o .jrxml utilizar logo o .jasper .

rfumiot

JavaC Membro
[Avatar]

Membro desde: 23/06/2015 17:19:55
Mensagens: 217
Offline

que eu saiba não tem como chamar sem o .jasper, mas tenho pouco conhecimento sobre interação com o jasper;

o estranho é que o erro que você passou
erro: net.sf.jasperreports.engine.JRException: Error compiling report java source files: caminho do projeto\dist\danfe_1442407494683_754301.java

esse danfe_1442407494683_754301.java existe?
jjordy1

JavaC Membro

Membro desde: 16/09/2015 09:22:00
Mensagens: 13
Offline

Seguinte,

nessa parte do codigo



ele compila o .jrxml e criar esse arquivo que ele não esta achando temporariamente,

quando eu executo no netbeans, eu percebo que ele cria esse arquivo no momento que se executa a linha



e depois esse arquivo some, o erro é exatamente esse, quando eu limpo e construo o projeto, por algum motivo ou ele não gera o arquivo ou gera em outro local,

alguem aqui tem um gerador de DANFE pelo XML que possa disponibilizar o código?

tou precisando de mais de uma gerador de DANFE pelo XML ...
tiagoberga

Moderador
[Avatar]

Membro desde: 11/03/2014 10:10:20
Mensagens: 439
Offline

Pessoal, estão utilizando XPATH ?

Tiago Bergamasco, 24 anos

Computer Scientist pela Centro Universitário Anhanguera
MBA Service-Oriented Architeture (SOA) pela Metrocamp - Ibmec
AngularJS Developer pela Caelum Ensino e Inovação- SP

Ao entrar em contato, por favor identifique-se antes
Site: Arara Tecnologia da Informação
Contatos: Google+, Twitter, Instagram, LinkedIn, Facebook, tiago.bergamasco@gmail.com
Comercial: 19 996050532

"Uma imagem vale mil palavras. Uma interface vale mil imagens." - Ben Shneiderman
[WWW]
jjordy1

JavaC Membro

Membro desde: 16/09/2015 09:22:00
Mensagens: 13
Offline

tiagoberga estou usando sim !! segue ai abaixo o codigo ...

macega

JavaC Membro

Membro desde: 08/07/2015 10:17:16
Mensagens: 46
Offline

no netbeans tive uns problemas parecidos, mas estou só dando um chute, não vi toda sua classe, mas pode ser isso adicionar o jar no ireports.

nfe-xml-3.10.jar

esse jar e o que tem aqui no fórum nos projetos do macielgoncalves

http://www.javac.com.br/jc/posts/list/1867-nfe-nfce-310-projetos-atualizados.page
[Thumb - Captura de tela 2015-09-23 22.45.24.png]
 Nome do arquivo Captura de tela 2015-09-23 22.45.24.png [Disk] Download
 Descrição config iReports
 Tamanho 83 Kbytes
 Baixado:  90 vez(es)

mkraulich

JavaC Membro

Membro desde: 20/03/2015 13:21:37
Mensagens: 2
Offline

Boa noite, peguei seu código como exemplo e da minha maneira consegui fazer funcionar ser o erro de nullpointer, onde eu utilizo os caminhos dos sub reports .jasper a partir do local atual onde estão, enviando a path como parametro para a variavel "danfe_diretorio" do jasper.
Porem, estou tendo outro poblema, o relatorio abre sem nenhum dados a partir da XML que mandei, ja pesquisei varios tutoriais, tentei simplificar seu código, mudar o nome das fields, mas nada, simplesmente abre o arquivo em branco. Ja passaram por algo parecido para talvez me mostrar a luz no final do tunel?

Desde já, meu agradecimento.
jjordy1

JavaC Membro

Membro desde: 16/09/2015 09:22:00
Mensagens: 13
Offline

mkraulich : qual o arquivo jrxml que você ta utilizando?

eu tive vários problemas, quanto a edição do relatório, pois qualquer alteração do relatório já não funcionava mais ..
jjordy1

JavaC Membro

Membro desde: 16/09/2015 09:22:00
Mensagens: 13
Offline

macega: adicionei o jar e nada, realmente não sei qual o problema, quando está no netbeans ele funciona quando gero o jar ele da paw.
mkraulich

JavaC Membro

Membro desde: 20/03/2015 13:21:37
Mensagens: 2
Offline

jjordy1: estou usando as jrxml que peguei em outro tópico aqui dos foruns de NFE, no caso este aqui http://www.javac.com.br/jc/posts/list/1790-jrxml-danfe-nfe-v310-resolvido.page

No seu caso, acredito que seja problema de caminho de arquivo, eu tinha esse mesmo problema no inicio, depois que fiz um repositorio com as urls e a partir delas, mando o jrxml dos subreport já compilado, não tive mais problemas.

Meu repositorio:



Logo, para organização e uso das urls, organizei os caminhos em uma Enum:



Sendo assim, para chamar um relatorio a partir do JRXML ao inves do .JASPER, deve se fazer desta maneira:


Espero que ajude.
 
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Ir para:   
Powered by JForum 2.1.9 © JForum Team