JasperReports - A operação é executada mas o relatório não é mostrado

Boa tarde,

Eu estou com um problema na aplicação que estou desenvolvendo como projeto acadêmico onde eu tenho um processo de compra que é executado com sucesso porém não consigo fazer com que o relatório seja chamado apresentando os itens que foram comprados.

Segue a minha classe dao


package dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import modelo.Compra;
import modelo.Produto;
import modelo.Venda;

public class DAOCompraPSQL implements DAOCompra {


	 DAOFactoryPSQL dao = DAOFactoryPSQL.getInstance();
		Connection con;
		
		public DAOCompraPSQL()
		{
			con = dao.getConnection();
		}
	public void cadastrar(Compra cp,Produto pd) {
		
		try{
			PreparedStatement ps = con.prepareStatement ("insert into  compra (data,produto,qtd_produto,valor_produto,fornecedor,total,id) values (?,?,?,?,?,?,?)");
			
		ps.setDate(1, cp.getData1());		
		ps.setString(2,pd.getModelo());
		ps.setInt(3,cp.getQdt_produto());	
		ps.setDouble(4,pd.getValor());
		ps.setString(5,cp.getNome_forne());
		ps.setDouble(6, cp.getTotal());
		ps.setInt(7, cp.getNumero_compra());
		ps.executeUpdate() ;
		
		
		}catch ( Exception e )
		{
			System.out.println(e.getMessage());
		}	
		
	}
	public Vector consultarCompra(Compra c) {
		
		
		try
		{
			PreparedStatement ps = con.prepareStatement("Select * from compra where id=? ");
			ps.setInt(1, c.getNumero_compra());
			ResultSet r = ps.executeQuery();

			Vector v = new Vector ();

			while( r.next())
			{
				  Compra c1 = new Compra();
				 
				  c1.setData1(r.getDate("data"));
				  c1.setDesc_produto(r.getString("produto"));
				  c1.setQdt_produto(r.getInt("qtd_produto"));
				  c1.setPreco_produto(r.getDouble("valor_produto"));
				  c1.setNome_forne(r.getString("fornecedor"));
				  c1.setTotal(r.getDouble("total"));	
				  c1.setNumero_compra(r.getInt("id"));
					
				v.add(c1);
			}
			return v;
		}
		catch (Exception e)
		{
			System.out.println(e.getMessage());
		}
		return null;

		
	}

	public int obterCodigo() 
		{ int codigo = 0;
		try
		{
			PreparedStatement ps = con.prepareStatement ("select max(id)from compra");
			ResultSet r = ps.executeQuery();
			
			if(r.next())
			{
				 codigo = r.getInt(1);
			}
		}catch (SQLException e1)
		{
			e1.getMessage();
		}
		
		return codigo;
		
		}

	public Compra consultarCompras(Compra c)
	{
		try
        {
            PreparedStatement ps = con.prepareStatement("select * from compra where id=? ");
            ps.setInt(1, c.getNumero_compra());
            
            ResultSet rs = ps.executeQuery();
            if(rs.next())
            {
            	c.setNumero_compra((rs.getInt("numero_compra")));
            	c.setNome_forne((rs.getString("nome_forne")));
				c.setDesc_produto(rs.getString("desc_produto"));
				c.setPreco_produto((rs.getDouble("preco_produto")));
				c.setQdt_produto(rs.getInt("qtd_produto"));
				c.setDataInicio((rs.getDate("dataInicio")));
				c.setTotal(rs.getDouble("total"));
				              
                return c;
            }
        }
        catch(SQLException e)
        {
            System.out.println(e.getMessage());
        }
        return null;
	}


	@Override
	public Vector consultarCompras(int num) {
		try
		{
			PreparedStatement ps = con.prepareStatement("select * from compra where id=? ");
			ps.setInt(1, num);
			ResultSet rs = ps.executeQuery();

			Vector v = new Vector ();

			while( rs.next())
			{
				Compra c = new Compra();
				c.setNumero_compra((rs.getInt("numero_compra")));
            	c.setNome_forne((rs.getString("nome_forne")));
				c.setDesc_produto(rs.getString("desc_produto"));
				c.setPreco_produto((rs.getDouble("preco_produto")));
				c.setQdt_produto(rs.getInt("qtd_produto"));
				c.setDataInicio((rs.getDate("dataInicio")));
				c.setTotal(rs.getDouble("total"));
				v.add(v);
			}
			return v;
		}
		catch (Exception e)
		{
			System.out.println(e.getMessage());
		}
		return null;
	}
}

Esse é o trecho da minha classe de controle onde após a efetivação do processo de compra, deveria ser chamado o relatório informando os itens comprados.

if ( e.getActionCommand().equals("Realizar Compra"))
			{ 
				try
				{
					int i = dcp.obterCodigo();
					i++;
					cp.setNumero_compra(i);
				}
				catch(NumberFormatException e1)
				{
					e1.getMessage();
				}
				
				int valorquant;
				for(int i=0 ; i<dtm.getRowCount();i++)
				{
				
						boolean realizacompra = false;
						Produto p5 = new Produto();
						pdt.setModelo((String) dtm.getValueAt(i ,0));
						pdt.setValor(Double.parseDouble((String) dtm.getValueAt(i ,1)));
						cp.setQdt_produto(Integer.parseInt((String) dtm.getValueAt(i ,2)));
						cp.setNome_forne((String) dtm.getValueAt(i ,3));
						java.sql.Date dataSql = new java.sql.Date(new Date().getTime());  
						cp.setData1(dataSql);
						p5 = dpdt.consultar_prod_tela(pdt);
						int quant = p5.getQuantidade();
						int quant2=cp.getQdt_produto();
						valorquant= quant+quant2;						
						pdt.setQuantidade(valorquant);
						pdt.setModelo((String) dtm.getValueAt(i ,0));
						pdt.setId(p5.getId());
						dpdt.alterar_qtd_prod(pdt);
						dcp.cadastrar(cp,pdt);
						JOptionPane.showMessageDialog(null,"Estoque atualizado com sucesso !!!",null,JOptionPane.INFORMATION_MESSAGE);
						JOptionPane.showMessageDialog(null,"Compra realizada com sucesso !!!",null,JOptionPane.INFORMATION_MESSAGE);
						}
						
				Vector v1 = new Vector();
				
				v1 = dcp.consultarCompras(cp.getNumero_compra());
				
				if(v1.size()>0)
				{
					try
					{
						JRBeanCollectionDataSource jr = new JRBeanCollectionDataSource(v1);
						String s = JasperFillManager.fillReportToFile("NotadeCompra.jasper",new HashMap(),jr);
						JasperViewer.viewReport(s,false,false);
					}
					catch(Exception t)
					{
						System.out.println(""+t);
					}
				}
					else
					{
						JOptionPane.showMessageDialog(null,"O relatório não contém páginas.", "Atenção ",JOptionPane.ERROR_MESSAGE);

					}
			}

Se alguem puder me ajudar eu agradeço pois não estou conseguindo identificar o que pode estar acontecendo.

Um abraço e boa tarde a todos.

Essa de relatório não é exibido é muito abrangente. Ele não abre? Abre mas está sem dados? Qual o ambiente? Desk ou web?

O relatorio não abre. O ambiente é desktop.

Obrigado

Provável que seja esta linha

JasperViewer.viewReport(s,false,false);  

Tente trocar por algo assim

JasperViewer.viewReport(s, false);

ou tente isso

ou

Tenta chamar ele assim:

 JasperReport in = (JasperReport) JRLoader.loadObject(URL);

JasperRunManager.runReportToPdf(in, parametros, jr);