Ir para conteúdo
  • Cadastre-se

dev botao

Erro ACBrBoleto + Java - Invalid memory access


Ver Solução Respondido por Daniel InfoCotidiano,
  • Este tópico foi criado há 151 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado
 

Estou usando windows 11. E o arquivo de log não está sendo criado.

Vou tentar esta versão mais antiga então obrigado!

Até o momento testei com as versões 0.2.0.272 e 0.2.0.273

vc quis dizer 0.1.1.10?

  • Consultores
Postado
 

vc quis dizer 0.1.1.10?

openssl
mas veja, ele precisa criar o log, executou o passo q te passei na maquina q nao esta gerando?
consegue criar um jar para eu testar em meu ambiente?
pode me enviar para [email protected], no corpo da mensagem favor colar o link deste post.
passar onde esta salvando a dll e dependencia para que eu possa tentar reproduzir aqui

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • Consultores
Postado
9 minutos atrás, Messias Bittencourt disse:

Enviei na sexta os fontes, o jar e a dll que estou usando.

bom dia !
Nao achei em nossa caixa , enviou para [email protected]?
(nao esqueca de colar o link deste post)
Qual seu email? se puder reenviar por favor

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • Membros Pro
Postado
1 hora atrás, Daniel InfoCotidiano disse:

bom dia !
Nao achei em nossa caixa , enviou para [email protected]?
(nao esqueca de colar o link deste post)
Qual seu email? se puder reenviar por favor

Sim. Enviei para [email protected] sexta dia 31 na parte da manhã às 10:44.

Enviado através do email [email protected]. Vou encaminhar o mesmmo.

Agora, Messias Bittencourt disse:

Sim. Enviei para [email protected] sexta dia 31 na parte da manhã às 10:44.

Enviado através do email [email protected]. Vou encaminhar o mesmo.

Enviei novamente

  • Consultores
Postado

@Messias Bittencourtrecebi sim
e tbm recebi o do dia 31, sempre que nos enviar o email, precisa colocar no corpo da mensagem o link do forum para que possamos identificar de que é o email.
no seu caso, procurei o email como messias e por anexo .. mas vi q envou link.
vou testar em meu ambiente.

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • Membros Pro
Postado
3 horas atrás, Daniel InfoCotidiano disse:

@Messias Bittencourtrecebi sim
e tbm recebi o do dia 31, sempre que nos enviar o email, precisa colocar no corpo da mensagem o link do forum para que possamos identificar de que é o email.
no seu caso, procurei o email como messias e por anexo .. mas vi q envou link.
vou testar em meu ambiente.

Muito obrigado pelas orientações. Assim será.

  • Consultores
Postado

precisava de um exemplo simples para teste. enfim executei o seu .jar
image.png

quais comandos disponiveis?
seu eu tentar localhost:8080
image.png

Tem como consultar o status do servico sefaz?
Salvei nesta pasta padrao a DLL
é assim q esta configurado ai com vc?
image.png

 

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • Membros Pro
Postado
5 minutos atrás, Daniel InfoCotidiano disse:

precisava de um exemplo simples para teste. enfim executei o seu .jar
image.png

quais comandos disponiveis?
seu eu tentar localhost:8080
image.png

Tem como consultar o status do servico sefaz?
Salvei nesta pasta padrao a DLL
é assim q esta configurado ai com vc?
image.png

 

localhost:8080/teste

Aí já executa o main registrando e salvando o pdf.
Com os endereços abaixo:
 

private static String ACBR_BOLETO_DLL = "C:\\dev\\Boletos_new\\arquivos_ini_hom\\ACBrBoleto64.dll";
private static String CEDENTE_INI = "C:\\dev\\Boletos_new\\arquivos_ini_hom\\cedente.ini"
private static String TITULO_INI = "C:\\dev\\Boletos_new\\arquivos_ini_hom\\titulo.ini";
private static String DIRETORIO = "C:\\dev\\Boletos_new\\arquivos_ini_hom\\";
 

  • Consultores
Postado

Seu arquivo ACBrLib.INI está sendo criado na pasta do JAVA ele nao estava lendo o arquivo da sua pasta. ele vai ler ou criar a partir do comando Inicializar. informe caminho completo, conforme exemplo abaixo.

Tentou inicializar informando a pasta correta? onde vc passa onde vai ser inicializada a INI entao passe sua pasta
Boleto_Inicializar([ eArqConfig, eChaveCrypt ]); exemplo:

Boleto_Inicializar( 'C:\dev\Boletos_new\ACBrLib\x64\ACBrLib.INI',)

ja configure o log este ini inicializado com os comandos ConfigGravarValor. mudei na mão e ele gerou o log corretamente:
Boleto_ConfigGravarValor(eSessao, eChave, sValor);
Exemplo:

acbrBoleto.configGravarValor(ACBrSessao.Principal, "LogNivel", 4);
acbrBoleto.configGravarValor(ACBrSessao.Principal, "LogPath", ''C:\dev\Boletos_new\Log\');
acbrBoleto.configGravar();
 

Screenshot_292.png

 

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • Membros Pro
Postado

Vocês tem algum outro exemplo de codigo java em que basicamente eu chamo um serviço e ele gera um boleto simples de teste?

 

Que não seja engessado no NetBeans, pois hoje em dia ninguém mais usa ele. Preciso de novas opções pra tentar por isso pra rodar.

  • Consultores
Postado

Não tenho, mas vc não consegue abstrair isso com as funcoes q citei acima ?

exemplo
configGravarValor(ACBrSessao.Principal, "LogNivel", 4);
acbrBoleto.configGravarValor(ACBrSessao.Principal, "LogPath", ''C:\dev\Boletos_new\Log\');

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • Membros Pro
Postado
Em 04/06/2024 at 15:42, Daniel InfoCotidiano disse:

 

Bom dia prezados.

Consegui evoluir aqui. Tive de alterar meu ambiente e sair do Spring. Agora estou usando:
- Eclipse 2023-12
- Jakarta (Para o serviço rest)
- Tomcat 10.1 (Que suporta o jakarta)

Mas agora está lendo o ini, gerando log e gravando o arquivo pdf na pasta definida.
image.png.c12a36845a4e0d862ee92c5b05a5d700.png 

image.png.d6313196f3e2ca76891d06c2be1bed45.png

Porém na hora de ...Boleto_IncluirTitulos... ele continua dando -10.
image.png.af917d1d06b35df6307fc7df440651f1.png

Pelo log vocês conseguem me dizer o porque deste -10 neste ponto?

ACBrLibBoleto-20240606.log

Anexo log para analise.

Muito obrigado por toda a ajuda.

image.png

  • Consultores
Postado
06/06/24 08:39:06:036 - Destravar
06/06/24 08:39:06:046 -    SetRetorno(-10, Unable to create file "C:\Program Files\Java\jdk-11.0.15.1\bin\boleto.pdf": Acesso negado.)
06/06/24 08:39:07:489 - Boleto_SetDiretorioArquivo(D:\Dev\arquivos_ini\0.2.0.291\Cdecl, arquivo.pdf )

Está sem acesso na pasta para salvar o boleto.pdf.

  • Membros Pro
Postado
49 minutos atrás, Renato Rubinho disse:
06/06/24 08:39:06:036 - Destravar
06/06/24 08:39:06:046 -    SetRetorno(-10, Unable to create file "C:\Program Files\Java\jdk-11.0.15.1\bin\boleto.pdf": Acesso negado.)
06/06/24 08:39:07:489 - Boleto_SetDiretorioArquivo(D:\Dev\arquivos_ini\0.2.0.291\Cdecl, arquivo.pdf )

Está sem acesso na pasta para salvar o boleto.pdf.

Mas isto acho q foi resolvido por ele mesmo na linha abaixo não?
 

06/06/24 08:39:07:489 - Boleto_SetDiretorioArquivo(D:\Dev\arquivos_ini\0.2.0.291\Cdecl, arquivo.pdf )
Agora, Messias Bittencourt disse:

Mas isto acho q foi resolvido por ele mesmo na linha abaixo não?
 

06/06/24 08:39:07:489 - Boleto_SetDiretorioArquivo(D:\Dev\arquivos_ini\0.2.0.291\Cdecl, arquivo.pdf )

Pq ele está salvando o boleto com sucesso mas neste end acima com o nome de arquivo.pdf

 

Agora, Messias Bittencourt disse:

Mas isto acho q foi resolvido por ele mesmo na linha abaixo não?
 

06/06/24 08:39:07:489 - Boleto_SetDiretorioArquivo(D:\Dev\arquivos_ini\0.2.0.291\Cdecl, arquivo.pdf )

Pq ele está salvando o boleto com sucesso mas neste end acima com o nome de arquivo.pdf

 

Ou é pq ele salva em 2 locais?

2 minutos atrás, Messias Bittencourt disse:

Mas isto acho q foi resolvido por ele mesmo na linha abaixo não?
 

06/06/24 08:39:07:489 - Boleto_SetDiretorioArquivo(D:\Dev\arquivos_ini\0.2.0.291\Cdecl, arquivo.pdf )

Pq ele está salvando o boleto com sucesso mas neste end acima com o nome de arquivo.pdf

 

Ou é pq ele salva em 2 locais?

O -10 aparece é na "06/06/24 11:02:03:184 - Boleto_IncluirTitulos(D:\Dev\arquivos_ini\titulo.ini, P )"

  • Consultores
Postado
1 hora atrás, Messias Bittencourt disse:

O -10 aparece é na "06/06/24 11:02:03:184 - Boleto_IncluirTitulos(D:\Dev\arquivos_ini\titulo.ini, P )"

Tente usar o Boleto_UltimoRetorno depois deste método para capturar o retorno da lib.

  • Membros Pro
Postado
7 minutos atrás, Renato Rubinho disse:

Tente usar o Boleto_UltimoRetorno depois deste método para capturar o retorno da lib.

Este daí já consegui resolver. Eu dei permissão na pasta bin. O engraçado é que realmente ele grava duas vezes o mesmo arquivo pdf.
Na pasta que eu defini com o nome que eu defini e uma cópia na pasta bin do java mas com o nome boleto.pdf....
Mas enfim e de qq forma passei deste problem.

 

Agora o que está acontecendo é que no Boleto_EnviarBoleto ele dá o erro abaixo:

06/06/24 13:15:19:153 - Boleto_EnviarBoleto(0 )
06/06/24 13:15:19:168 - Travar
06/06/24 13:15:19:180 - Destravar
06/06/24 13:15:19:193 -    SetRetorno(-10, Access violation)
 

E no Boleto_Finalizar ele dá o erro abaixo:

6/06/24 13:18:32:973 - LIB_Finalizar
06/06/24 13:18:32:986 -    SetRetorno(-2, Access violation)
 

Vou tentar o Boleto_UltimoRetorno conforme sugerido pra tentar descobrir o que pode ser.

 

 

  • Consultores
Postado
9 minutos atrás, Messias Bittencourt disse:

E no Boleto_Finalizar ele dá o erro abaixo:

6/06/24 13:18:32:973 - LIB_Finalizar
06/06/24 13:18:32:986 -    SetRetorno(-2, Access violation

Tente aumentar o tamanho da alocação de memória que está fazendo para a sResposta que está passando neste método.

  • Membros Pro
Postado
1 hora atrás, Renato Rubinho disse:

Tente aumentar o tamanho da alocação de memória que está fazendo para a sResposta que está passando neste método.

Abaixo os retornos:
image.png.d6c38b5c012c637d41bc6a7d0e0d8161.png

Veja se está correto meu método por favor:
 

public static void geraBoleto(){

 

int inicializar = ACBrBoletoLib.INSTANCE.Boleto_Inicializar("D:\\Dev\\arquivos_ini\\0.2.0.272\\acbrlib.ini", "");

 

int limpar = ACBrBoletoLib.INSTANCE.Boleto_LimparLista();

//int config = ACBrBoletoLib.INSTANCE.Boleto_ConfigurarDados(CEDENTE_INI);

//int incluir = ACBrBoletoLib.INSTANCE.Boleto_IncluirTitulos(TITULO_INI, "P");

int configIncluir = ACBrBoletoLib.INSTANCE.Boleto_IncluirTitulos(CEDENTE_TITULOS_INI, "P");

int setdir = ACBrBoletoLib.INSTANCE.Boleto_SetDiretorioArquivo(DIRETORIO, "arquivo.pdf");

int gerar = ACBrBoletoLib.INSTANCE.Boleto_GerarPDF();

 

ByteBuffer bb = ByteBuffer.allocate(6144);

int enviar = ACBrBoletoLib.INSTANCE.Boleto_EnviarBoleto(0, bb, null);

ByteBuffer cc = ByteBuffer.allocate(6144);

IntByReference exitCode1 = new IntByReference();

int enviarUltimoBoleto = ACBrBoletoLib.INSTANCE.Boleto_UltimoRetorno(cc, exitCode1);

 

bb.toString();

 

String newContent = new String(bb.array(), Charset.forName("UTF-8"));

System.out.println(newContent);

 

int finalizar = ACBrBoletoLib.INSTANCE.Boleto_Finalizar();

ByteBuffer dd = ByteBuffer.allocate(6144);

IntByReference exitCode2 = new IntByReference();

int finalizarUltimoBoleto = ACBrBoletoLib.INSTANCE.Boleto_UltimoRetorno(dd, exitCode2);

}

Agora, Messias Bittencourt disse:

Abaixo os retornos:
image.png.d6c38b5c012c637d41bc6a7d0e0d8161.png

Veja se está correto meu método por favor:
 

public static void geraBoleto(){

 

int inicializar = ACBrBoletoLib.INSTANCE.Boleto_Inicializar("D:\\Dev\\arquivos_ini\\0.2.0.272\\acbrlib.ini", "");

 

int limpar = ACBrBoletoLib.INSTANCE.Boleto_LimparLista();

//int config = ACBrBoletoLib.INSTANCE.Boleto_ConfigurarDados(CEDENTE_INI);

//int incluir = ACBrBoletoLib.INSTANCE.Boleto_IncluirTitulos(TITULO_INI, "P");

int configIncluir = ACBrBoletoLib.INSTANCE.Boleto_IncluirTitulos(CEDENTE_TITULOS_INI, "P");

int setdir = ACBrBoletoLib.INSTANCE.Boleto_SetDiretorioArquivo(DIRETORIO, "arquivo.pdf");

int gerar = ACBrBoletoLib.INSTANCE.Boleto_GerarPDF();

 

ByteBuffer bb = ByteBuffer.allocate(6144);

int enviar = ACBrBoletoLib.INSTANCE.Boleto_EnviarBoleto(0, bb, null);

ByteBuffer cc = ByteBuffer.allocate(6144);

IntByReference exitCode1 = new IntByReference();

int enviarUltimoBoleto = ACBrBoletoLib.INSTANCE.Boleto_UltimoRetorno(cc, exitCode1);

 

bb.toString();

 

String newContent = new String(bb.array(), Charset.forName("UTF-8"));

System.out.println(newContent);

 

int finalizar = ACBrBoletoLib.INSTANCE.Boleto_Finalizar();

ByteBuffer dd = ByteBuffer.allocate(6144);

IntByReference exitCode2 = new IntByReference();

int finalizarUltimoBoleto = ACBrBoletoLib.INSTANCE.Boleto_UltimoRetorno(dd, exitCode2);

}

Segue log:
ACBrLibBoleto Demo-20240606.log

  • Membros Pro
Postado
1 hora atrás, Daniel InfoCotidiano disse:

@Messias Bittencourt vc esta usando dll demo
observe a msg de reposta
"SetRetorno(-999, O Demo da ACBrLibBoleto Demo expirou)"

Vou te passar o link da lib de producao

 

Baixei ele e já melhorou. Agora apenas o Boleto_EnviarBoleto que está dano -10.

  • Consultores
Postado

Bom dia !
Qual é o banco ?
Pode anexar o titulo e cedente aqui p que eu possa testar em meu ambiente?
se conter dados sensiveis, envie para [email protected], no corpo da mensagem favor colar o link deste topico para que possamos identifica-lo

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

×
×
  • 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.