Applet + Finger = Dor de cabeça

Tenho uma aplicação em applet que roda localmente porém no esquema cliente-servidor não vai, vejam o erro do JavaConsole e por favor alguém me ajude…

Agradeço antecipadamente, segue o erro:

[quote]Java Plug-in 1.5.0_06
Using JRE version 1.5.0_06 Java HotSpot™ Client VM
User home directory = C:\Documents and Settings\informenge

c: clear console window
f: finalize objects on finalization queue
g: garbage collect
h: display this help message
l: dump classloader list
m: print memory usage
o: trigger logging
p: reload proxy configuration
q: hide console
r: reload policy configuration
s: dump system and deployment properties
t: dump thread list
v: dump thread stack
x: clear classloader cache
0-5: set trace level to

security: Accessing keys and certificate in Mozilla user profile: null
Clear classloader cache … completed.
basic: Stopping applet …
basic: Removed progress listener: sun.plugin.util.GrayBoxPainter@1c5f743
basic: Finding information …
basic: Releasing classloader: sun.plugin.ClassLoaderInfo@fa7e74, refcount=0
basic: Done …
basic: Joining applet thread …
basic: Destroying applet …
basic: Disposing applet …
basic: Quiting applet …
basic: Joined applet thread …
basic: Unregistered modality listener
basic: Registered modality listener
basic: Referencing classloader: sun.plugin.ClassLoaderInfo@145f0e3, refcount=1
basic: Added progress listener: sun.plugin.util.GrayBoxPainter@170bea5
basic: Loading applet …
basic: Initializing applet …
basic: Starting applet …
java.lang.NoClassDefFoundError: com/griaule/grFinger/StatusCallBack
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at appFinger.getFingerObject(appFinger.java:62)
at appFinger.init(appFinger.java:22)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
basic: Exception: java.lang.NoClassDefFoundError: com/griaule/grFinger/StatusCallBack
java.lang.NoClassDefFoundError: com/griaule/grFinger/StatusCallBack
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at appFinger.getFingerObject(appFinger.java:62)
at appFinger.init(appFinger.java:22)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
basic: Modality pushed
basic: Modality popped
[/quote]

Isso indica que essa classe não se encontra disponível para a applet no seu web server. Você provavelmente vai precisar de acertar o tag "< applet >" para indicar onde está o .jar que contém essa classe.

Resumindo na tag eu devo colocar o endereço completo dos meus dois arquivos .jar? É que eles estão no mesmo diretório do html então pensei que talvez não precisasse, vou fazer o teste e retorno logo depois, MUUUUUIIIITOO obrigado amigo.

Não é para passar o endereço completo (http://blablabla/lalala/quaqua.jar), passe o relativo no atributo “archive”.

Pior é que eu passo exatamente assim amigo…exemplo:

archive=“jar/GrFingerJava.jar jar/Finger.jar”

Obrigado, mas acho que não deve ser isso, me disseram que pelo fato de mexer com hardware precisa de certificado digital, alguém tem um passo a passo de como certificar um produto? Usando “public key”, sei que uso o keytool e o jarsigner, mas como faço o cliente reconhecer esse certificado?

Mais uma vez obrigado e desculpe a ignorância.

No próprio site da Sun que fala de plugins existe uma lista do que você deve fazer para assinar digitalmente um .JAR. É muito chato, mas é questão de seguir a receita de bolo.

Eu tive de pedir para comprar um certificado da Verisign (que é super-caro - é mais que o dobro do custo de um certificado de web server) mas é que eu tenho de disponibilizar esse applet assinado para os clientes, sem que eles tenham de ficar instalando certificados de autoridades certificadoras no arquivo “cacerts” do Sun Plugin. No seu caso, para testes, você não precisa fazer isso.

Bom vou dar uma estudada no caso, obrigado pela ajuda, mas realmente acho que é certificado digital o problema mesmo, a questão é, eu consigo assinar o applet, porém aparentemente o cliente não consegue entender o mesmo, nem mesmo o Mozzila consegue entender, pois nem pergunta se eu quero aceitar o certificado. Se alguém tiver alguma dica por favor serei grato.
Agradeço antecipadamente.

[quote=Futuremax]Bom vou dar uma estudada no caso, obrigado pela ajuda, mas realmente acho que é certificado digital o problema mesmo, a questão é, eu consigo assinar o applet, porém aparentemente o cliente não consegue entender o mesmo, nem mesmo o Mozzila consegue entender, pois nem pergunta se eu quero aceitar o certificado. Se alguém tiver alguma dica por favor serei grato.
Agradeço antecipadamente.[/quote]

Só para você ter uma idéia de como é chato trabalhar com applets (se possível evitar a solução applets, que dá muita dor de cabeça).

Quem processa as assinaturas digitais dos applets, no caso do Sun Java Plug-In, é o próprio plugin (não é o IE ou o Mozilla/Firefox), e o processamento de certificados e autoridades certificadoras é feito pelo Sun Java Plug-In, não pelo browser.

No seu caso, provavelmente a versão anterior do applet está no “cache” do Sun Java Plug-In. Chame o Painel de Controle do Java (se for Windows; no caso do Unix/Linux deve haver alguma ferramenta parecida disponível no menu do browser) para poder ver se algum applet está no cache (por exemplo, uma versão não-assinada dele); se estiver, limpe-o. Você pode desabilitar o cache durante o desenvolvimento, para evitar esse problema, mas sempre é bom limpar o cache e reiniciar o browser cada vez que você for testar uma versão nova do applet;

Uma coisa que me ocorreu, se eu fizer o applet carredar do computador cliente provavelmente ele funcione com êxito, até aí tudo bem, agora, como faço isso?

Valew pela paciência.

Caro amigo,

Ao procurar na internet por ajuda para desenvolver meu TCC, pude ver no forum do GUJ que você está desenvolvendo uma aplicação que utiliza Leitura Biometrica com o software da Griaule. Estou desenvolvendo uma aplicação que tambem deve utilizar Leitura Biométrica, mas estou enfrentando sérios problemas para conseguir desenvolver tal aplicação. Tenho que apresentar meu TCC na faculdade dia 24 desse mês e não sei mais o que fazer, será que você poderia me ajudar, me dar algumas dicas, sei lá…, estou realmente desesperado.

Conto com sua ajuda.

Obrigado pe atenção