Jasper nao funciona fora do netbeans

6 respostas
G

Ola a todos!

Criei uma aplicacao java no netbeans que busca dados no banco e exibe atraves de relatorio criado no IReport.

Quando executo dentro do netbeans ele roda perfeitamente (isso mostra que ja incluí as bibliotecas necessarias, pelo menos eu acho…).

Mas quando faco o build e tento executar o jar criado ele da o seguinte erro:

[i]

net.sf.jasperreports.engine.JRException: Error compiling report java source file

s : C:\Guile\java\oclube\dist\Socios_1187019220968_224933.java

at net.sf.jasperreports.engine.design.JRJavacCompiler.compileClasses(JRJ

avacCompiler.java:93)

at net.sf.jasperreports.engine.design.JRAbstractClassCompiler.compileUni

ts(JRAbstractClassCompiler.java:67)

at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(J

RAbstractCompiler.java:190)

at net.sf.jasperreports.engine.design.JRDefaultCompiler.compileReport(JR

DefaultCompiler.java:105)

at net.sf.jasperreports.engine.JasperCompileManager.compileReport(Jasper

CompileManager.java:212)

at view.Relatorios.gerar(Relatorios.java:59)

at view.Relatview.jButton1ActionPerformed(Relatview.java:186)

at view.Relatview.access$100(Relatview.java:18)

at view.Relatview$2.actionPerformed(Relatview.java:98)

at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Sour

ce)

(…)
Caused by: java.io.IOException: CreateProcess: javac -classpath oclube.jar C:\Gu

ile\java\oclube\dist\Socios_1187019220968_224933.java error=2

at java.lang.ProcessImpl.create(Native Method)

at java.lang.ProcessImpl.(Unknown Source)

at java.lang.ProcessImpl.start(Unknown Source)

at java.lang.ProcessBuilder.start(Unknown Source)

at java.lang.Runtime.exec(Unknown Source)

at java.lang.Runtime.exec(Unknown Source)

at net.sf.jasperreports.engine.design.JRJavacCompiler.compileClasses(JRJ

avacCompiler.java:62)

 62 more[/i]

Me ajudem por favor ! O que eu faço???

Desde ja agradeco!

6 Respostas

Juliano_Pedroso_da_S

Olá.

Você importou os .jar do Jasper necessários para rodar e gerar os relatórios?
Antes de importar crie uma pasta lib em seu projeto e copie os .jar dentro desta pasta lib e depois importa estes que estão na pasta lib, após isso crie o .jar do seu projeto.
Provavelmente vc está importando direto da pasta do jasper sem copiar para seu projeto.

G

Ja tinha feito isso… alias o proprio netbeans faz… ele criou a pasta lib…
tanto eh q dentro do netbeans o programa roda perfeito… abrindo o relatorio sem erros… somente quando eu transformo em jar para ser executado fora do netbeans eh que acontece esse erro ae em cima…

Ajuda… pls! :stuck_out_tongue_winking_eye:

Juliano_Pedroso_da_S

Mas antes de Importar vc copiou os .jar para dentro da pasta lib?
Só depois que copiar vc importa eles.

W

Você precisa colocar todos os Jar’s no ClassPath, pelo visto você está tentando compilar e rodar o relatório, quando você usa o Jasper 3 arquivos são criados :

  • jrxml - Projeto utilizado na edição , não passa de um XML
  • java - Temporário java do fonte do relatório
  • jasper - Relatório compilado

Para sua aplicação rodar o relatório você poderia compilar o jrxml no NetBeans e enviar o .jasper(relatório compilado) junto com os Jar’s do projeto. Seu programa na execução faria um passo a menos, no caso a compilação do jrxml. Você pode também colocar os .jasper dentro do .jar e de dentro da classe chamar tudo internamente.

G

Ola a todos!
Bem, resolvi o problema… eu estava compilando o relatorio de novo no meu programa… ou seja… com essas linhas
[i]

1-JasperDesign desenho = JRXmlLoader.load(“mysocios.jrxml”);

2-JasperReport relatorio = JasperCompileManager.compileReport( desenho );

(…)
[/i]

eu estava criando um novo arquivo .jasper como percebi.
Entao nao havia necessidade de usar a linha 2. A retirei e apenas fiz uma modificacao e ficou assim a continuacao:

[i]

JasperPrint impressao = JasperFillManager.fillReport( “mysocios.jasper” , parametros, jrRS );

JasperViewer viewer = new JasperViewer(impressao, true);
viewer.show();

[/i]

funcionando perfeitamente :slight_smile:

Obrigado a todos pelas dicas q me esclareceram bastante.

S

Ae, Amigo estou com o mesmo problema que voce estava mais eu não consegui resolver o problema vc poderia me dar uma ajuda a respeito.
Este e o codigo valeu!

package relatorio;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.HashMap;

import java.util.Map;

import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JRResultSetDataSource;

import net.sf.jasperreports.engine.JasperCompileManager;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.JasperReport;

import net.sf.jasperreports.engine.design.JasperDesign;

import net.sf.jasperreports.engine.xml.JRXmlLoader;

import net.sf.jasperreports.engine.JasperManager;

//import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.view.JasperViewer;

import utilitarios.conexao;

public class rel_trabalho {

conexao con = new conexao();
public rel_trabalho() {

try

{

con.conecta();

con.executeSQL(SELECT * from trabalho);

JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset);

JasperPrint jasperPrint = JasperFillManager.fillReport(

relatorios/rel_ordemserviço.jasper, new HashMap(), jrRS);

JasperViewer.viewReport(jasperPrint);

} catch (Exception erro){

JOptionPane.showMessageDialog(null,deu erro =+erro);

}

}

/* public static void main (String args[])

{

new rel_trabalho();

}*/

}

Criado 13 de agosto de 2007
Ultima resposta 24 de ago. de 2007
Respostas 6
Participantes 4