[VRaptor] Applet [RESOLVIDO]

Galera bom dia, preciso criar uma applet para gravar um arquivo do lado do cliente. Por exemplo quando fazemos o download de qualquer arquivo da internet o browser questionar salva, salvar como etc… neste caso não quero perguntar porque já sei onde o arquivo deve ser salvo, ou seja, em um local X da máquina… Já fiz alguns exemplos e obtive sucesso (uma espécie de hello world) porém ainda não consegui isso com o VRaptor criei o applet Java compilei gerando o .class e ai vem o problema coloquei em vários pontos da aplicação até acrescentei o caminho dele localhost dentro dos compilados do tomCat e nada, coloquei o .java e o .class junto na pasta onde esta o .jsp mas também não obtive sucesso… Alguém sabe me dizer se há algum configuração diferente para o VRaptor ?

Erro:

java.lang.ClassNotFoundException: MyApplet.class
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

HTML[code]

Applet failed to run. No Java plug-in was found. [/code]

Vlw.

vc tá fazendo um applet com o VRaptor, ou esse applet tá consumindo um serviço feito com o VRaptor?

Estou fazendo uma applet com o VRaptor… Até consegui rodar uma applet porém é intermitente fica hora dando erro ao localizar a class hora não… Fiz uma applet simples apenas mostrando uma msg na tela… Mas quanto a parte do hora dar erro hora não ainda não consegui resolver…

Applets se comportam como se fossem imagens ou arquivos .html estáticos. Portanto, assim como você não põe os .png ou .jpeg no mesmo diretório dos .jsp (eles costumam ficar em um diretório separado - tipicamente chamado “imagens” ou “images” ou “img”), eu aconselho que os applets também fiquem em um diretório separado.
Cada vez mais está mais difícil fazer applets rodarem nos browsers; exceto em alguns casos específicos, aconselho a tentar pensar em soluções que não dependem de applets.
Uma coisa que ajuda muito a fazer deploy de applets é ver o que o Java Console (uma janela que você pode chamar em alguns browsers) está mostrando para você.
Outra coisa que ajuda bastante: a menos que seu applet consista de exatamente um arquivo .class (examine os binários gerados, muitas vezes a simples presença de uma classe anônima faz com que sejam gerados vários arquivos .class a partir de um único arquivo .java), você deve criar um .jar e botar todos os arquvos .class dentro dele. Então você chama a classe principal da sua applet usando o atributo CODE, e o arquivo .JAR deve ser mencionado usando-se o tag ARCHIVE.

entanglement vlw pela resposta.

Então é exatamente isso que estou fazendo veja só:

<!-- APPLET - Inicio --> <object id="appletReceber" type="application/x-java-applet" height="100" width="320"> <param name="archive" value="MyApplet.jar" /> <param name="code" value="MyApplet.class" /> Applet failed to run. No Java plug-in was found. </object> <!-- APPLET - FIM -->

Também não queria usar applet’s mas não vejo solução para o caso. É ruim de mexer porque da uns erros que não deveriam acontecer e do nada volta a funcionar, não sei se tem a ver com o TomCat 7.0 mas acredito que não, outra coisa não consigo seprar e colocar numa estrutura legal tipo /applet/MyApplet.class não funciona de jeito nenhum, ai não sei se tem a ver com o VRaptor mas hoje apenas funciona no meio das JSP’s que não minha opinião é bem porco.

Você conhece uma outra forma de fazer o que proponho no inicio da msg ? (escrever um arquivo do lado do cliente)

abs.

tem algum motivo forte pra vc querer escrever um arquivo na máquina do cliente? a gente evita ao máximo ter que fazer esse tipo de coisa

Tem sim cara. O software trabalha com transferência de arquivos é uma das funcionalidades e escrever um arquivo X de acordo com uma informação Y que possuem um caminho de escrita Z… Entendeu ? é meio confuso mas é dessa forma…

faça um aplicativo em swing então… ou JavaFX

o browser não foi feito pra isso.

Eu normalmente iria criar um diretório dentro da sua aplicação web (chamado “/applets”) que hospedaria as applets e que seria configurado igualzinho a um diretório que tivesse imagens. Então eu jogaria o jar do programa nesse diretório e teria algo semelhante a isto:

    <object id="appletReceber" type="application/x-java-applet" height="100" width="320">  
        <param name="archive" value="/applets/MyApplet.jar" />  
        <param name="code" value="br.com.exemplo.MyApplet" />  
        Applet failed to run. No Java plug-in was found.  
    </object>

Isso se sua applet for uma classe que estende JApplet (ou Applet, depende se você está usando Swing ou AWT) e ela estiver no pacote br.com.exemplo. Evite escrever no atributo code a extensão “.class” embora muitas referências na Internet recomendem usar isso. É que “code” recebe o nome da classe a ser invocada, não do arquivo .class que deve ser carregado.

entanglement

Funcionou corretamente desta forma… Coloquei todas as classes em único .jar conforme o value do archive e apntei a applet principal com package e nome conforme value do code…

Perfeito.

Obrigado.