Ir para conteúdo
  • Cadastre-se

  • Este tópico foi criado há 3430 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Bom dia amigos estou com problemas na implementação do ACBrIBGE quando eu busco o municio por código ou nome vai tudo bem, mas quando tenho pegar o objeto da lista de municípios da o erro abaixo.

 

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package jACBrFramework.ibge;

import com.sun.jna.ptr.IntByReference;
import jACBrFramework.ACBrClass;
import jACBrFramework.ACBrEventListener;
import jACBrFramework.ACBrException;
import jACBrFramework.interop.ACBrIBGEInterop;
import jACBrFramework.interop.ACBrIBGEInterop.CidadeRec;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;


public class ACBrIBGE extends ACBrClass {

    private ACBrIBGECidade[] cidades;


    public ACBrIBGE() throws ACBrException {

    }

    /**
     * Cria um novo objeto com base no charset recebido.
     *
     * @param pCharset charset utilizado na conversao para geracao do sintegra.
     */
    public ACBrIBGE(Charset pCharset) throws ACBrException {
        this();
        setCustomCharset(pCharset);
    }

    public void BuscarPorCodigo(int codigo) throws ACBrException {
        cidades = null;
        int ret = ACBrIBGEInterop.INSTANCE.IBGE_BuscarPorCodigo(getHandle(), codigo);
        checkResult(ret);
    }

    public void BuscarPorNome(String nome, String uf, Boolean exata) throws ACBrException {
        cidades = null;
        int ret = ACBrIBGEInterop.INSTANCE.IBGE_BuscarPorNome(getHandle(), nome, uf, exata);
        checkResult(ret);
    }

    private void CarregaCidades() throws ACBrException {
        int count = ACBrIBGEInterop.INSTANCE.IBGE_Cidades_GetCount(getHandle());
        checkResult(count);
        cidades = new ACBrIBGECidade[count];
        for (int i = 0; i < count; i++) {
            CidadeRec cidadeRec = new ACBrIBGEInterop.CidadeRec();
            int ret = ACBrIBGEInterop.INSTANCE.IBGE_Cidades_GetItem(getHandle(), cidadeRec,i);
            checkResult(ret);

            ACBrIBGECidade cidade = new ACBrIBGECidade();
            
            cidade.setMunicipio(fromUTF8(cidadeRec.Municipio));
            cidade.setCodMunicio(cidadeRec.CodMunicio);
            cidade.setUF(fromUTF8(cidadeRec.UF));
            cidade.setCodUF(cidadeRec.CodUF);
            cidade.setArea(cidadeRec.Area);
            cidades[i] = cidade;

        }
    }

    @Override
    protected void onInitialize() throws ACBrException {
        IntByReference handle = new IntByReference();
        int ret = ACBrIBGEInterop.INSTANCE.IBGE_Create(handle);
        checkResult(ret);
        setHandle(handle.getValue());
    }

    /**
     * Finaliza a comunicacao com a acbr.
     *
     * @throws ACBrException excecao acionada ao finalizar a comunicacao.
     */
    @Override
    protected void onFinalize() throws ACBrException {
        if (getHandle() != 0) {
            int ret = ACBrIBGEInterop.INSTANCE.IBGE_Destroy(getHandle());
            checkResult(ret);
            setHandle(0);
        }
    }

    public void addOnBuscaEfetuada(ACBrEventListener<BuscaEfetuadaEventObject> pListener) {
        if (!hasListeners("onBuscaEfetuada")) {
            ACBrIBGEInterop.INSTANCE.IBGE_SetOnBuscaEfetuada(getHandle(), new ACBrIBGEInterop.OnBuscaEfetuadaCallback() {
                @Override
                public void invoke() {
                    onBuscaEfetuada();
                }
            });
        }

        //addListener("onLePeso", pListener);
    }

    /**
     * Remove o listener associado.
     *
     * @param pListener
     */
    public void removeOnBuscaEfetuada(ACBrEventListener<BuscaEfetuadaEventObject> pListener) {
        removeListener("onBuscaEfetuada", pListener);
        if (!hasListeners("onBuscaEfetuada")) {
            ACBrIBGEInterop.INSTANCE.IBGE_SetOnBuscaEfetuada(getHandle(), null);
        }
    }

    /**
     * Leitura o codigo de barras.
     *
     * @return
     */
    public void onBuscaEfetuada() {
        BuscaEfetuadaEventObject e = new BuscaEfetuadaEventObject(this);
        notifyListeners("onBuscaEfetuada", e);
    }

    @Override
    public void checkResult(int pResult) throws ACBrException {
        switch (pResult) {
            case -1: {
                String lMessage;
                final int LEN = 1024;
                ByteBuffer buffer = ByteBuffer.allocate(LEN);
                int ret = ACBrIBGEInterop.INSTANCE.IBGE_GetUltimoErro(getHandle(), buffer, LEN);
                lMessage = fromUTF8(buffer, ret);
                throw new ACBrException(lMessage);
            }
            case -2: {
                throw new ACBrException("ACBr IBGE não inicializado.");
            }
        }
    }

    public ACBrIBGECidade[] getCidades() {
        if (cidades == null) {
            try {
                CarregaCidades();
            } catch (ACBrException ex) {
                ex.printStackTrace();
            }
        }
        return cidades;
    }

    public void setCidades(ACBrIBGECidade[] cidades) {
        this.cidades = cidades;
    }

}
package jACBrFramework.ibge;

import java.util.EventObject;

/**
 * Evento acionado para leitura de dados.
 * 
 * @author Jose Mauro
 * @version Criado em: 26/05/2014 16:16:58, revisao: $Id: LeCodigoEventObject.java 6912 2014-05-26 20:07:28Z jmsandy $
 */
public class BuscaEfetuadaEventObject extends EventObject {
    
    // <editor-fold defaultstate="collapsed" desc="Constants">
    private static final long serialVersionUID = -982939358125089587L;
    // </editor-fold>
    // <editor-fold defaultstate="collapsed" desc="Attributes">
    // </editor-fold>
    //<editor-fold defaultstate="collapsed" desc="Constructor">
    public BuscaEfetuadaEventObject(Object pSource) {
        super(pSource);
    }
    // </editor-fold>
    // <editor-fold defaultstate="collapsed" desc="Getters - Setters">
    // </editor-fold>
 
}
package jACBrFramework.Test;

import jACBrFramework.ibge.ACBrIBGE;
import jACBrFramework.ibge.ACBrIBGECidade;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Testes basicos para ACBrIBGE.
 *
 * @author Willian Resplandes Matias
 * @version Criado em: 24/01/2017 
 */
public class ProgramTestIBGE {

    public static void main(String[] args) {
        try {
            final ACBrIBGE ibge = new ACBrIBGE();
            ibge.BuscarPorCodigo(5106422);
            ACBrIBGECidade[] cidades = ibge.getCidades();
            System.out.println(cidades[0].getMunicipio());


        } catch (Exception ex) {
            Logger.getLogger(ProgramTestAac.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

}

 

run:
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x1608cbc1, pid=4648, tid=0x00000544
#
# JRE version: Java(TM) SE Runtime Environment (8.0_101-b13) (build 1.8.0_101-b13)
# Java VM: Java HotSpot(TM) Client VM (25.101-b13 mixed mode, sharing windows-x86 )
# Problematic frame:
# C  [ACBrFramework32.dll+0x7cbc1]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# C:\ACBrFramework\jACBrFramework\jACBrFramework\hs_err_pid4648.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
Java Result: 1
BUILD SUCCESSFUL (total time: 4 seconds)

Willian Resplandes Matias

Skype: willian.matias.frialto

  • Consultores
Postado

Favor ler as regras! 

continuemos então somente :

 

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Este tópico foi criado há 3430 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...