Ireport relatório não abre em aplicativo.jar no cliente

3 respostas
R

Olá amigos

Estou com um problema na hora de gerar relatórios no meu aplicativo.jar do lado do cliente.Vou explicar melhor

Criei um aplicativo no netbeans com varias telas e adicionei um botão em cada uma destas telas para imprimir relatório de acordo com cada tela até aqui beleza, no netbeans ou no arquivo gerado.jar na maquina que está o banco de dados(servidor) tudo bem ele abre o relatório e funciona beleza, mas se instalo o aplicativo em outra maquina (cliente) ele funciona normalmente mas os relatórios não abrem, gostaria de saber como fazer para abrir o relatório na maquina do cliente.

segue um codigo de uma de minhas telas com o código do botão imprimir relatório que no servidor abre corretamente, mas no cliente não abre

package correge.siscor.view;

import com.mysql.jdbc.Connection;

import correge.siscor.bean.ConexaoMsql;

import java.awt.EventQueue;

import java.beans.Beans;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import javax.persistence.RollbackException;

import javax.swing.JFrame;

import javax.swing.JPanel;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.view.JasperViewer;

/**
*

  • @author willian
    */
    public class AndaresView extends JPanel {

    public AndaresView() {
    
    initComponents();
    
    if (!Beans.isDesignTime()) {
    
    entityManager.getTransaction().begin();
    
    }
    
    }
    

    /** This method is called from within the constructor to

    • initialize the form.

    • WARNING: Do NOT modify this code. The content of this method is

    • always regenerated by the Form Editor.
      
      */
      
      @SuppressWarnings(unchecked)
      
      // 
      
      private void initComponents() {
      
      bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
      
      entityManager = java.beans.Beans.isDesignTime() ? null : javax.persistence.Persistence.createEntityManagerFactory(“siscorjavaPU”).createEntityManager();
      
      query = java.beans.Beans.isDesignTime() ? null : entityManager.createQuery(“SELECT a FROM Andar a”);
      
      list = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList() : org.jdesktop.observablecollections.ObservableCollections.observableList(query.getResultList());
      
      masterScrollPane = new javax.swing.JScrollPane();
      
      masterTable = new javax.swing.JTable();
      
      nomeAndarLabel = new javax.swing.JLabel();
      
      nomeAndarField = new javax.swing.JTextField();
      
      saveButton = new javax.swing.JButton();
      
      refreshButton = new javax.swing.JButton();
      
      newButton = new javax.swing.JButton();
      
      deleteButton = new javax.swing.JButton();
      
      jButton1 = new javax.swing.JButton();
      

      FormListener formListener = new FormListener();

      setBackground(new java.awt.Color(102, 102, 102));

      masterTable.setForeground(new java.awt.Color(0, 102, 102));

      org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, list, masterTable);
      
      org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${nomeAndar}"));
      
      columnBinding.setColumnName(“Nome Andar”);
      
      columnBinding.setColumnClass(String.class);
      
      bindingGroup.addBinding(jTableBinding);
      

      masterScrollPane.setViewportView(masterTable);

      nomeAndarLabel.setForeground(new java.awt.Color(255, 255, 255));
      nomeAndarLabel.setText(“Nome Andar:”);

      org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.nomeAndar}"), nomeAndarField, org.jdesktop.beansbinding.BeanProperty.create(“text”));
      
      binding.setSourceUnreadableValue(null);
      
      bindingGroup.addBinding(binding);
      
      binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), nomeAndarField, org.jdesktop.beansbinding.BeanProperty.create(“enabled”));
      
      bindingGroup.addBinding(binding);
      
      saveButton.setIcon(new javax.swing.ImageIcon(I:\Siscor\Imagens\disk.png)); // NOI18N
      
      saveButton.setToolTipText(Gravar o registro);
      
      saveButton.addActionListener(formListener);
      
      refreshButton.setIcon(new javax.swing.ImageIcon(I:\Siscor\Imagens\cancel.png”)); // NOI18N
      
      refreshButton.setToolTipText(Cancelar o registro);
      
      refreshButton.addActionListener(formListener);
      
      newButton.setIcon(new javax.swing.ImageIcon(I:\Siscor\Imagens\page_edit.png”)); // NOI18N
      
      newButton.setToolTipText(Inserir novo registro);
      
      newButton.addActionListener(formListener);
      

      deleteButton.setIcon(new javax.swing.ImageIcon(“I:\Siscor\Imagens\delete.png”)); // NOI18N
      deleteButton.setToolTipText(“Excluir o registro”);

      binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), deleteButton, org.jdesktop.beansbinding.BeanProperty.create(“enabled”));
      bindingGroup.addBinding(binding);

      deleteButton.addActionListener(formListener);

      jButton1.setIcon(new javax.swing.ImageIcon(I:\Siscor\Imagens\printer_empty.png)); // NOI18N
      
      jButton1.setToolTipText(Imprimir relatório);
      
      jButton1.addActionListener(formListener);
      
      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
      
      this.setLayout(layout);
      
      layout.setHorizontalGroup(
      
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
      
      .addComponent(masterScrollPane, javax.swing.GroupLayout.Alignment.LEADING, 0, 0, Short.MAX_VALUE)
      
      .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
      
      .addComponent(nomeAndarLabel)
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(layout.createSequentialGroup()
      
      .addGap(16, 16, 16)
      
      .addComponent(newButton)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addComponent(deleteButton)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addComponent(refreshButton)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addComponent(saveButton)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addComponent(jButton1))
      
      .addGroup(layout.createSequentialGroup()
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addComponent(nomeAndarField, javax.swing.GroupLayout.PREFERRED_SIZE, 321, javax.swing.GroupLayout.PREFERRED_SIZE)))))
      
      .addContainerGap())
      
      );
      

      layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {deleteButton, newButton, refreshButton, saveButton});

      layout.setVerticalGroup(
      
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addComponent(masterScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 112, Short.MAX_VALUE)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      
      .addComponent(nomeAndarLabel)
      
      .addComponent(nomeAndarField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addComponent(jButton1)
      
      .addComponent(saveButton)
      
      .addComponent(refreshButton)
      
      .addComponent(deleteButton)
      
      .addComponent(newButton))
      
      .addContainerGap())
      
      );
      

      bindingGroup.bind();
      }

    // Code for dispatching events from components to event handlers.

    private class FormListener implements java.awt.event.ActionListener {
    
    FormListener() {}
    
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    
    if (evt.getSource() == saveButton) {
    
    AndaresView.this.saveButtonActionPerformed(evt);
    
    }
    
    else if (evt.getSource() == refreshButton) {
    
    AndaresView.this.refreshButtonActionPerformed(evt);
    
    }
    
    else if (evt.getSource() == newButton) {
    
    AndaresView.this.newButtonActionPerformed(evt);
    
    }
    
    else if (evt.getSource() == deleteButton) {
    
    AndaresView.this.deleteButtonActionPerformed(evt);
    
    }
    
    else if (evt.getSource() == jButton1) {
    
    AndaresView.this.jButton1ActionPerformed(evt);
    
    }
    
    }
    
    }//
    
    @SuppressWarnings(unchecked)
    
    private void refreshButtonActionPerformed(java.awt.event.ActionEvent evt) {
    
    entityManager.getTransaction().rollback();
    
    entityManager.getTransaction().begin();
    
    java.util.Collection data = query.getResultList();
    
    for (Object entity : data) {
    
    entityManager.refresh(entity);
    
    }
    
    list.clear();
    
    list.addAll(data);
    
    }
    
    private void deleteButtonActionPerformed(java.awt.event.ActionEvent evt) {
    
    int[] selected = masterTable.getSelectedRows();
    
    List<correge.siscor.bean.Andar> toRemove = new ArrayList<correge.siscor.bean.Andar>(selected.length);
    
    for (int idx=0; idx<selected.length; idx++) {
    
    correge.siscor.bean.Andar a = list.get(masterTable.convertRowIndexToModel(selected[idx]));
    
    toRemove.add(a);
    
    entityManager.remove(a);
    
    }
    
    list.removeAll(toRemove);
    
    }
    
    private void newButtonActionPerformed(java.awt.event.ActionEvent evt) {
    
    correge.siscor.bean.Andar a = new correge.siscor.bean.Andar();
    
    entityManager.persist(a);
    
    list.add(a);
    
    int row = list.size()-1;
    
    masterTable.setRowSelectionInterval(row, row);
    
    masterTable.scrollRectToVisible(masterTable.getCellRect(row, 0, true));
    
    nomeAndarField.requestFocus();
    
    }
    
    private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {
    
    try {
    
    entityManager.getTransaction().commit();
    
    entityManager.getTransaction().begin();
    
    } catch (RollbackException rex) {
    
    rex.printStackTrace();
    
    entityManager.getTransaction().begin();
    
    List<correge.siscor.bean.Andar> merged = new ArrayList<correge.siscor.bean.Andar>(list.size());
    
    for (correge.siscor.bean.Andar a : list) {
    
    merged.add(entityManager.merge(a));
    
    }
    
    list.clear();
    
    list.addAll(merged);
    
    }
    
    }
    

    [color=red] AQUI ESTÁ A PARTE DO CÓDIGO DO BOTÃO IMPRIMIR ONDE CHAMO MEU RELATÓRIO[/color]

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    
    try {
    
    Connection con = (Connection) new ConexaoMsql().getConnection();
    
    HashMap parametros = new HashMap();
    
    JasperPrint jp = JasperFillManager.fillReport("./Relatórios/RelAndares.jasper", parametros, con);
    
    JasperViewer jrv = new JasperViewer(jp);
    
    JasperViewer.viewReport(jp, false);// fechar apenas o relatório
    
    } catch (Exception e) {
         e.printStackTrace();
     }
    

    }

    // Variables declaration - do not modify
    
    private javax.swing.JButton deleteButton;
    
    private javax.persistence.EntityManager entityManager;
    
    private javax.swing.JButton jButton1;
    
    private java.util.List<correge.siscor.bean.Andar> list;
    
    private javax.swing.JScrollPane masterScrollPane;
    
    private javax.swing.JTable masterTable;
    
    private javax.swing.JButton newButton;
    
    private javax.swing.JTextField nomeAndarField;
    
    private javax.swing.JLabel nomeAndarLabel;
    
    private javax.persistence.Query query;
    
    private javax.swing.JButton refreshButton;
    
    private javax.swing.JButton saveButton;
    
    private org.jdesktop.beansbinding.BindingGroup bindingGroup;
    
    // End of variables declaration
    
    public static void main(final String[] args) {
    
    EventQueue.invokeLater(new Runnable() {
    
    public void run() {
    
    JFrame frame = new JFrame();
    
    frame.setContentPane(new AndaresView());
    
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    
    frame.pack();
    
    frame.setVisible(true);
    
    frame.setTitle(args[0]);
    
    }
    
    });
    
    }
    

}

Desde já agradeço a ajuda dos amigos e espero uma ajuda para resolver este probleminha

3 Respostas

furutani

Provavelmente ele não encontra o arquivo jasper.
Mas pra ter certeza seria bom você postar o stacktrace aqui.

R

Olá Amigo

Obrigado por responder a duvida, mas como vc já percebeu ele não estava encontrando o jasper, pelo menos é o que percebi usando uma máquina com windows, pois estava usando o linux, outro erro que apareceu foi sobre a fonte arial black dizendo que o jvm não reconhecia este tipo de fonte, entrei nos relatórios e mudei o tipo de fonte e funcionou, vou testar o mesmo procedimento no linux e posto aqui o resultado.

Mesmo assim muito obrigado por me ajudar, não vou encerrar o topico ainda pois vou testar no linux pra ver se o problema persiste

até mais amigo.

R

Olá amigos

Como falei anteriormente testei o relatório no windows e funcionou , testei no linux e o caminho foi o mesmo apesar de alguns relatórios não abrirem, pois não está encontrando a imagem do cabeçalho, mas sei que o caminho a seguir e criar novamente os relatórios com o erro de imagem ou fonte e sei que vai funcionar.

Quero aqui agradecer ao(s) amigos(os) que deram uma resposta e se precisarem também de alguma coisa estarei a disposição

Um abraço e até a proxima

topico resolvido.

Criado 12 de março de 2011
Ultima resposta 18 de mar. de 2011
Respostas 3
Participantes 2