Erro chamada JasperReport

3 respostas
J

Pessoa bom dia,

Estou com um erro na minha chamado para um relatorio desenvolvido em JasperSoft de dentro de uma tela em Java, a tela entrea meu botões de teste são acionados, mas no momento em que executo a chamada do reporte “JasperPrint impressao = JasperFillManager.fillReport( src , parametros, conecta);” recebo a seguinte mensagem … que esta abaixo do meu código…inclui também a classe de conexão…desde já obrigado,

package RelWeb;

import java.sql.Connection;

import java.sql.SQLException;

import java.util.HashMap;

import java.util.Map;

import static net.sf.jasperreports.engine.JasperFillManager.fillReport;

import java.awt.event.*;

import net.sf.jasperreports.engine.JREmptyDataSource;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.view.JasperViewer;
import javax.swing.*;

public class Botao extends JPanel {

/**

*

*/

Conecta2 conecta = new Conecta2();
private static final long serialVersionUID = 1L;
private JButton btMensagem; 
private ImageIcon imageIcon1;

public Botao() throws ClassNotFoundException, SQLException {
	inicializarComponentes();
	conecta.conexao();
	definirEventos();
}

private void inicializarComponentes() {
	setLayout(null);
	imageIcon1 = new ImageIcon("java.jpg");
	btMensagem = new JButton("Mensagem", imageIcon1);
	btMensagem.setBounds(320, 420, 140, 38);
	add(btMensagem);
}

private void definirEventos () throws ClassNotFoundException, SQLException {
	
	btMensagem.addActionListener(new ActionListener() {
		private Map parametros;

		public void actionPerformed(ActionEvent e) {
			conecta.conexao();
			int confirma = JOptionPane.showConfirmDialog(null, "Confirma a impressão", "Atenção", JOptionPane.YES_NO_OPTION);
			if(confirma == JOptionPane.YES_OPTION) {
				String src = "C:/Users/Computador/JaspersoftWorkspace/MyReports/RelatorioEstoque.jasper";
				try {
					JasperPrint impressao = JasperFillManager.fillReport( src , parametros, conecta);
			        						
				} catch (Exception ex) {
					JOptionPane.showMessageDialog(getRootPane(),  "Erro ao Gerar Relatorio \n" + ex);
				}
		}
	}
});
}

}

Aqui minha classe de conexão…

package RelWeb;

import java.sql.*;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.swing.JOptionPane;

public class Conecta2 {

public Statement stm;
public ResultSet rs;
private String driver = "oracle.jdbc.driver.OracleDriver";
private String caminho = "jdbc:oracle:thin:@localhost:1521:xe";
private String usuario = "projeto";
private String senha = "projeto";
public Connection con;

public void conexao() {
	try {
		System.setProperty("jdbc.Drivers", driver);			
		con=DriverManager.getConnection(caminho, usuario, senha);
		JOptionPane.showMessageDialog(null, "Conexão com sucesso 2");
	} catch (SQLException ex) {
		JOptionPane.showMessageDialog(null, "Conexão não realizada com sucesso/n" + ex);
	}
}

//public void desconecta() {
//	con.close());
//}

}

Erro…

Exception in thread “AWT-EventQueue-0” java.lang.Error: Unresolved compilation problem:
The method fillReport(String, Map<String,Object>, Connection) in the type JasperFillManager is not applicable for the arguments (String, Map, Conecta2)

at RelWeb.Botao$1.actionPerformed(Botao.java:52)
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 Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

3 Respostas

darlan_machado

Você está passando um objeto de Conecta2 e não um de java.sql.Connection

J

Certo, mas como seria a forma correta de passar este comando, eu tenho que passar a conexão certo ?

sds

darlan_machado

Você tem a classe Conecta2 e nela você tem um atributo do tipo Connection chamado con (e, pasme, público).
O primeiro passo seria alterar esse modificador para private.
O segundo, criar esse getter:

public Connection getCon() {
    return this.con;
}

Na classe Botao (sério mesmo que é esse nome?), no método definirEventos, em actionPerformed, você deve invocar esse método no fillReport, no lugar de Conecta2.

Criado 20 de setembro de 2019
Ultima resposta 20 de set. de 2019
Respostas 3
Participantes 2