Bom Dia… O meu problema é o seguinte, eu estou começando o desenvolvimento de uma aplicação frente de caixa com o NetBeans 7.2.1
Então instalei o Emul2100, e instalei um VSPE para emular as portas, eu ja tentei criar uma porta virtual e setar o valor “EmulMFD=0” criando porta virtual e
"EmulMFD=1" sem criar porta virtual…
Procurei na internet e parece que pra windows 64 tem que colocar as DLL´s na pasta SysWOW64, mais não sei como alterar o chamado pra pasta certa.
Abaixo segue a exception
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Windows\System32\BemaFI32.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1928)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1854)
at java.lang.Runtime.loadLibrary0(Runtime.java:845)
at java.lang.System.loadLibrary(System.java:1084)
at bemajava.Bematech.<clinit>(Bematech.java:338)
at teste.Teste.main(Teste.java:18)
Java Result: 1
Não sei o que fazer… e queria anular a opção de voltar a usar um sistema 32 bits
Sou novo nisso ainda to aprendendo, desculpa a pergunta, pode ser boba, eu teria que Instalar o JDK 32 bit? ou Criar uma Máquina virtual 32 bits pra rodar o java?
As duas respostas funcionam, mas recomendaria usar a JVM de 32 bits, que é algo bem mais fácil de fazer, sem contar que pode ser que o seu software de virtualização não consiga lidar bem com as portas seriais ou USB se você não configurar direito.
Opa, beleza?
Cara, o que acontece é que no jar da bematech, que vem com a BemaFI64.dll, há uma linha que carrega a biblioteca dinâmica, mas, chama pela versão 32 bits.
O ideal é utilizar os arquivos .java que estão dentro do zip, nele você pode trocar o
System.loadLibrary("BemaFI32");
Por
System.loadLibrary("BemaFI64");
Claro, sem esquecer de colocar a DLL BemaFI64 e os demais arquivos listados no readme dentro de Windows\System32 (e não SysWow64).
Ah, se for utilizar os .java, lembre-se de colocá-los num package com nome bemajava, pois a DLL foi criada para atender requisições da classe com os métodos nativos a partir deste package, ok?
Eu realmente estava usando um JVM 64, desinstalei tudo e reinstalei de novo, agora o problema exception foi resolvido, meu problema agora é com o emulador da impressora fiscal, fiz uma classe pra teste:
public static void main(String[] args) {
int iRetorno;
iRetorno = Bematech.LeituraX();
if (iRetorno == 0) {
JOptionPane.showMessageDialog(null, "Erro= Nº" + iRetorno + " - Erro de Comunicação");
}else{
JOptionPane.showMessageDialog(null, "Erro= Nº" + iRetorno + " - Outra coisa, Depois Colocamos as outras opções de retorno!");
}
}
}[/code]
Creio que o meu problema agora seja com o virtualizador de porta serial, parece que só tem versão free para 32 bits, então creio que o erro de comunicação venha dai
alguém saberia me dizer se existe alguma outra forma de emular a impressora bematech? sem que seja utilizando o VSPE ou o Bemafith, alguma outra opção?
Amigo, é so voce executar o emulador como administrador e depois de aberto o emulador clica com botao direito dele e configuração. Dai vai aparecer pra voce selecionar o numero da porta.