Sistema funciona na máquina de desenvolvimento e não em produção

Olá,

Estou com problemas na execução de uma aplicação em máquinas de produção.

O projeto:

  1. Compilado no NetBeans + Java 1.6.0 update 24b07
  2. Utilizo o JasperReports + iReport para criação de relatórios

Se executo o sistema de minha máquina (dev), mesmo com o executável no servidor de arquivos, a geração de Reports funciona perfeitamente.

Se executo o sistema a partir de uma máquina da produção que também faz uso do mesmo executável no servidor de arquivos, a geração de Reports não funciona.

O executável se encontra no servidor de arquivos (Windows 2003 server, sem Active Directory) que recebe acesso direto via INICIAR->EXECUTAR>\<recurso><recurso>…[b].jar[/b] ou utilizando mapeamento de rede no “Windows Explorer” utilizando Z:<recurso><recurso>…[b].jar[/b], que dá na mesma.

O fato é que já “debuguei” e não são exibidos erros.

Já mandei alertar com JOptionPane.showMenssageDialog(null,“Passou por <instrução-atual>”) durante todo o processo, e todos as mensagens aparecem sem causar Exceptions aparentemente.

Eu sei que é quase impossível resolver sem ver o problema frente ao código, mas alguém tem alguma idéia do que possa estar interferindo no funcionamento correto dos Reports no sistema[b]?

Estou utilizando um arquivo build.xml para gerar pacotes JAR com as libs dentro do mesmo. Se eu utilizar a versão gerada pelo próprio NetBeans sem escolher para exportação de JAR, copi as pastas excedentes geradas pelo projeto, e na máquinas de DEV funciona normalmente, já em máquinas de Produção não funcionam como esperado.

Alguém me ajuda? Help-me? Ayúdame?

Estrutura de diretórios errada.
Ou você está usando caminho absoluto aos relatórios ou está alterando a estrutura do local onde o jar está e onde os jasper estão.

Outra coisa, isto não é java básico, por favor, leia com atenção a descrição de cada fórum para ter maior assertividade ao postar e, por consequência, maior índice de respostas adequadas.

[quote=drsmachado]Estrutura de diretórios errada.
Ou você está usando caminho absoluto aos relatórios ou está alterando a estrutura do local onde o jar está e onde os jasper estão.[/quote]

Opa,

Obrigado pela resposta DRSMACHADO.

Acho também que este seja o problema, porém não sei se estou fazendo algo errado nos códigos. Já modifiquei o código para testar se na partição “C:” iria funcionar, e nada.

O relatório funciona na minha máquina. Ao disparar a ação parar gerar o relatório, no meu “C:” o relatório aparece normalmente como dadosBean.pdf. Já na maquina da produção, aparetemente o processo de preenchimento está sendo feito, pois, gasta-se o mesmo tempo (medições oculares) em processamento até a mensagem de “Relatório Gerado!”

Dê uma olhada no código onde aparecem os caminhos.

      try {
          JasperFillManager.fillReportToFile(
               "src\dadosBean.jasper",
               null, 
               jrds
          );

          // PDF
           JasperExportManager
                .exportReportToPdfFile(
                     "src\dadosBan.jrprint", // Caminho onde está o relatório preenchido
                     "C:\dadosBean.pdf" // Caminho onde será gerado o pdf
                );
       }
       catch(Exception ex) {
           ex.printStackTrace();
       }

Você sabe algum outro modo de referenciar estes caminhos?

os caminhos antes estavam utilizando “/” ao invés de “\” e também não estava funcionando.

=/

Então, camarada.
Acredito que o sistema não esteja encontrando o arquivo dadosBean.jasper
Quando eu gero o jar, crio uma pasta com os jasper e coloco no mesmo diretório do jar

-C:\teste
-->MinhaApp.jar
--relatorios
--->Lista.jasper
--->Evolucao.jasper

Assim, apenas referencio esta pasta e o relatório em questão.

E funciona…

Oi!

1 - Tem certeza que queres referenciar o caminho de forma fixa em seu código? Não é mais adequado usar um System.getProperty(“user.dir”) ou algum outro tipo de propriedade afim de pegar o caminho corretamente?

2 - Evite, na minha opinião, usar “/” ou “” ou “//” e por assim em diante. faça assim:

String path = "c:" + File.separator + "reports";

Nesse caso, você não se preocupa se o SO é Windows, Linxus, Mac…certo?
Abraços.

Cara, me desculpe pela localidade do post, eu li sobre a descrição de cada fórum. Mas eu realmente não soube dizer se esse seria um post qualificado como Java Avançado, pois, acontece sempre uns erros que as vezes são simples de corrigir, e se não for avançado, vão me dizer a mesma coisa que você me disse.

Enfim, existe a possibilidade de Eu, Você ou outro alguém movê-lo para a área de Java Avançado?

Obrigado.

Opa, Obrigado pelas respostas.

Testei agora usando o “File.separator” mas também não funcionou.

Todos os métodos que utilizam caminhos com “\” ou “/” e que são utilizados pelo processo de Criação do Report foram substituídos por “File.separator”. Mesmo assim não obtive sucesso na resolução do problema.

Mais alguma idéia? =/

Obrigado.

Opa,

Obrigado pela ajuda galera.

O erro estava no próprio Report, onde ele indicava que um SubReport estava em um caminho absoluto (C:…\dadosBean.*).

Abraços.