Bom dia pessoal, estou desenvolvendo um applet o qual utiliza o RXTXcomm para manipular a serial.
Se colocar o dll no lugar correto dentro do JavaHome o meu applet funciona perfeitamente, mas eu gostaria de não precisar colocar a dll em uma pasta especifica, por exemplo criei um diretório dentro do c: “C:\Applet” onde a dll está e a partir deste diretório que a dll seja carregada.
O porque disto, quando o applet é iniciado ele cria esse diretório e dentro dele cria todas as dlls necessárias para rodar o aplicativo evitando que o usuário precise adicionar as dll no seu JavaHome, claro para tal o applet deve estar assinado.
Testei algumas coisas que encontrei na Web como loadlibrary mas não rolou! Alguém poderia me ajudar?
Carregar Dll + Applet
3 Respostas
Tenta botar a dll no System32,aqui eu uso load library na boa.
O problema que o colocar seria feito pelo próprio programa, mas como o system32 também é uma pasta que só pode ser acessado “alterada” como administrador o applet não tem permissão.
O que preciso é conseguir fazer o load de uma pasta como no exemplo que citei acima.
http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/System.html#load(java.lang.String) - olhar a documentação ajuda um pouco, não? É para usar “load”, não “loadLibrary”.
A propósito, há alguns problemas relacionados a usar JNI + Applets que não podem ser resolvidos só com isso que você quer usar.
Um sintoma clássico disso é você tentar dar um “refresh” na página que tem essa applet com JNI - o que ocorre é que nunca mais a applet consegue carregar a biblioteca nativa, a menos que você reinicie o browser inteirinho (argh). Naqueles browsers em que a JVM roda em um processo separado é pior ainda, porque é necessário também matar esse processo, o que não é coisa para usuários, só desenvolvedores.
Infelizmente, você terá de criar um instalador e esse instalador deve fazer várias coisas, entre elas copiar a DLL para um diretório no path (usualmente C:\WINDOWS\SYSTEM32) e instalar os jars da sua biblioteca JNI dentro de jre\lib\ext (por exemplo, em c:\Program Files\Java\jre6\lib\ext - a localização correta, infelizmente, depende de como o plugin Java foi instalado nessa máquina.)