Willian Resplandes 11 Report post Posted January 24, 2017 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 Share this post Link to post Share on other sites
Juliomar Marchetti 2,837 Report post Posted January 24, 2017 Favor ler as regras! continuemos então somente : Juliomar Marchetti Ajude o Projeto ACBr crescer - Assine o SAC skype: juliomar telegram: juliomar http://www.juliomarmarchetti.com.br Share this post Link to post Share on other sites