[RESOLVIDO] JasperReports relatório em branco ou nulo

Já tentei um monte de coisas:
qdo faço : rel = JasperFillManager.fillReport(jR, null, c2); ele exibe o relatório, mas sem os dados vindos do banco, em branco, mas com a formatação do .jasper
qdo faço: rel = JasperFillManager.fillReport(jR, null, jrs); ele nao exibe o relatório, e aparece o joption dizendo q nao há paginas a serem exibidas…

onde foi q eu errei?

  import java.sql.Connection;
   import java.sql.SQLException;
   import java.sql.Statement;
   import java.util.HashMap;
   import java.io.File;
   import java.sql.*;
   import javax.swing.JOptionPane;

   import net.sf.jasperreports.engine.JRException;
   import net.sf.jasperreports.engine.JasperFillManager;
   import net.sf.jasperreports.engine.JasperPrint;
   import net.sf.jasperreports.view.JasperViewer; 
   import  net.sf.jasperreports.engine.JRResultSetDataSource;
   import net.sf.jasperreports.engine.JasperReport;
   import net.sf.jasperreports.engine.JasperManager; 
   
    public class Relatorios{
    
    
   
       public Relatorios() {}
       private ResultSet getRS(Connection conexao){ 
         ResultSet rs = null;
         try{
            Statement stmt = conexao.createStatement(); 
           
            rs = stmt.executeQuery("select * from planadm.projeto");      
            rs.first();
            while(rs.next()){
               System.out.println(rs.getString("nome"));
            
            }
         }
             catch(Exception b){b.printStackTrace();}
         return rs; 
      }
       public JasperPrint Gerar(Connection con, String arquivoJasper, File file){
          Estuda e = new Estuda();
            e.AbreLivro();
            Connection c2 = e.getConexao();
            if(c2==null){
               JOptionPane.showMessageDialog(null, "Conexao nula");
            }

         
      	
      	
      	JasperPrint rel = null; 
         try {
            ResultSet rs = null;
         
            try{
               rs = getRS(c2);
            }
                catch(Exception n){n.printStackTrace();}
            
            
            JRResultSetDataSource jrs = new JRResultSetDataSource(rs);
            String pathArquivo ="C:\\Users\\User\\Desktop\\Porto\\tudo2.jasper"; 
            JasperReport jR = JasperManager.loadReport(pathArquivo);
         	
            HashMap map = new HashMap();
           //System.out.println(arquivoJasper + jrs.toString());


            rel = JasperFillManager.fillReport(jR, null, c2);
            JasperViewer.viewReport(rel);  
         } 
             catch (JRException p) {
               p.printStackTrace();
            }
         return rel;
      }
}

Verifique se tem dados na tabela projeto
Não me parece que tenha erros de programação ai.

então, mas porr isso mesmo fiz este trecho:

rs = stmt.executeQuery("select * from planadm.projeto");        
             rs.first();  
             while(rs.next()){  
                System.out.println(rs.getString("nome"));  
               
             }  

sai certinho, dessa forma testo a conexao e o comando sql. Aliás, o comando funciona também o no ireport, e é a mesma linha. Acho q esqueci de falar isso. O comando sql no .jasper, feito pelo jrxml é o mesmo que o dessa query acima. Por isso eu consigo passar tanto o resultset qto só a conexão pro .jasper.
É a primeira vez q faço esses relatórios, vi exemplos vários na net, e pelo q entendi, posso tanto passar o resultset qto a conexao pra ele buscar… nestes dois casos, acontece o relatado no primeiro post.

valeu por enquanto

tente mudar as opções do relatorio lá no ireport, talves estaja configurado para caso o select não retornar nada, mostrar a msg de “não ha paginas”

mesmo assim, até mudei, a diferença é q ele abre, mas em branco por exemplo…
a select retorna os dados sim, estou testando isso na própria classe, o estranho é q o .jasper parece nao receber a conexão em um caso, e no outro nao recebe o resultset… pelo q vi, a principal possibilidade disso acontecer é quando os campos definidos no .jasper são diferentes dos retornados pela consulta… mas nao é este o problema… o priview do ireport por eemplo funciona normalmente… a consulta direto no sgdb funciona normalmente… etc…

alguem tem ideia do q tá acontecendo? ou pelo menos de onde devo olhar?
valeu aos q já tentaram ajudar!

 rel = JasperFillManager.fillReport(jR, null, c2);  
             JasperViewer.viewReport(rel); 

repare oque esta a fazer!!

 JRResultSetDataSource jrs = new JRResultSetDataSource(rs);  
             String pathArquivo ="C:\\Users\\User\\Desktop\\Porto\\tudo2.jasper";   
             JasperReport jR = JasperManager.loadReport(pathArquivo);  
               
             HashMap map = new HashMap();  
            //System.out.println(arquivoJasper + jrs.toString());  
   
   
             rel = JasperFillManager.fillReport(jR, jrs, map);  
             JasperViewer.viewReport(rel);    

Tente assim

dessa forma num deu, só assim compilou:
rel = JasperFillManager.fillReport(jR, map, jrs);

mas no fim, na hora de exibir ele diz q nao há paginas para serem exibidas… logo depois fecha todo o programa, sendo q estava numa thread, dentro dum while, dentro dum try… também nao sei d onde isso vem, mas essa é outra história…

amigo o problema esta nessa tua classe Relatorios.

de uma re-analisada

DESCOBRI
o código tava certo, era problema com a versão das bibliotecas… eu havia descartado isso pq não havia exceção nem erro… mas resolvi fazer o teste…

acontece que quando eu abria o ireport, ele puxava as bilbiotecas dele, a commons e o jasper… dae eu salvava e tals. No jdk eu tinha outras versões dessa bibliotecas… apenas substitui as do jdk e jre pelas q já vinham no pacote do ireport!

agradeço a ajuda!