Problema com Jasper & Eclipse

Ola

nao estou conseguindo gerar um relatorio simples…

ele nao da erro nenhum mas nao da certo tb…

codigo:

import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.HashMap;

import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.view.JasperViewer;

public class Teste {

public static void main (String [] args){
	
	Connection connection;
    ResultSet resultSet ;
    Statement statement;

    
    try
    {

      Class.forName("com.mysql.jdbc.Driver");

      String url = "jdbc:mysql://localhost/academico";
    	 String userName = "academico";
    	 String password = "academico";
      
      
      String query = "SELECT * FROM TBALUNO";

      connection =  DriverManager.getConnection(url,userName, password);
      
      statement = connection.createStatement();
      
      resultSet =  statement.executeQuery(query);
      
      File reportFile = new File("reports/academico.jasper");


       [color=red]//ele nao passa daqui , e tambem não da erro nenhum.... [/color]

JasperRunManager.runReportToPdfFile(reportFile.getAbsolutePath(), new HashMap(), new JRResultSetDataSource(resultSet));

      JasperViewer.viewReport( "reports/academico.pdf", false );
      
      
    }
    catch (Exception e)
    {
     
    }
    finally
    {
      
    }
	   
}

}

se alguem puder me ajudar…

grato desde ja…

Se você colocar algum código de debug no catch{} não vai ajudar?
Você tem que fazer o tratamento para cada exceção que ocorrer:

  1. banco de dados (SQLException)
  2. leitura/escrita de arquivos (FileNotFoundException)
  3. e do Jasper (não me lembro das classes Exception respectivas).

OK?

o problema é que nao gera nenhuma excecao…

o programa vai até :
[color=darkblue]
JasperRunManager.runReportToPdfFile(reportFile.getAbsolutePath(), new HashMap(), new JRResultSetDataSource(resultSet));[/color]

e depois para…

mas nao é gerado nenhum tipo de excecao…

o que devo fazer?

Vc está chamando o JasperViewer e passando um PDF como parâmetro para ele.
Onde vc esta criando o relatório??? Está abrindo esse PDF???

Altere na sua classe o Exception, coloque assim:

catch (Exception e){
   e.printStackTrace();
}

Ai sim vc vai ver o retorno da excessão! :wink:

Vamos lá.

import java.io.File;
import java.io.FileNotFoundException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap; 

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.view.JasperViewer; 

public class Teste {
	public static void main(String[] args) {

		Connection connection;
		ResultSet resultSet;
		Statement statement;

		try {

			Class.forName("com.mysql.jdbc.Driver");

			String url = "jdbc:mysql://localhost/lojavirtual";
			String userName = "lojavirtual";
			String password = "lojavirtual";

			String query = "SELECT * FROM jpa_tech_supp";

			connection = DriverManager.getConnection(url, userName, password);

			statement = connection.createStatement();

			resultSet = statement.executeQuery(query);

			File reportFile = new File("reports/technical.jasper");

			//ele nao passa daqui , e tambem não da erro nenhum....

			JasperRunManager.runReportToPdfFile(reportFile.getAbsolutePath(),
					new HashMap(), new JRResultSetDataSource(resultSet));

			JasperViewer.viewReport("reports/academico.pdf", false);

		} 
		catch( ClassNotFoundException cnfEx ){
			System.out.println( cnfEx.getMessage() );
		}
		catch( SQLException sqlEx ){
			System.out.println( sqlEx.getMessage() );
		}
		catch( JRException jrEx ){
			System.out.println( jrEx.getMessage() );
		}

		

	}
}

Por aqui ocorreu uma java.io.FileNotFoundException: o arquivo technical.jasper não existe. E realmente eu não tenho esse arquivo!

Teste o código acima.

OK?

File reportFile = new File("reports/technical.jasper");

Olhe esta linha ai no seu codigo.

Mudei algumas coisinha ae:

package RelatorioJava;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.HashMap; 
 
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.view.JasperViewer; 
 
 public class Teste {
 	public static void main(String[] args) {
 		
 		Connection connection;
 		ResultSet resultSet;
 		Statement statement;
 
 		try {
 
 			Class.forName("com.mysql.jdbc.Driver");
 
 			String url = "jdbc:mysql://localhost/academico";
 			String userName = "root";
 			String password = "masterkey";
 
 			String query = "SELECT * FROM tbaluno";
 
 			connection = DriverManager.getConnection(url, userName, password);
 
 			statement = connection.createStatement();
 
 			resultSet = statement.executeQuery(query);
 
 			JasperFillManager.fillReportToFile("academico.jasper", new HashMap(), connection);
 			JasperExportManager.exportReportToPdfFile("academico.jrprint");
 
 			JasperViewer.viewReport("academico.jrprint", false);
 
 		}  	
 		catch(Exception e){
 			e.printStackTrace();
 		}
 
 		
 
 	}
 }

Abraço!

ae mano…

vlw a ajuda…

agradeço d+++

abraço…

Tranquilo! Tamo ae!