Estudando Applets

9 respostas
S

Galera estou estudando applets e fiz um exemplo basico de hello world, mas ao abrir a página o local onde o applet deveria ser exbido fica um Error.

Achei estranho então decidi entrar no site da Oracle e pegar alguns exemplos e verifiquei que muitos dos exemplos está com o mesmo erro.

Erro
http://www.oracle.com/technetwork/java/example1-135511.html
http://www.oracle.com/technetwork/java/index-135948.html

Funciona
http://www.oracle.com/technetwork/java/example1-142131.html

Testei no Chrome e IE 9, em outras maquinas com JSDK 7 e 6.

Alguém sabe dizer o porque isso ocorre? Pois o meu Hello World está com o mesmo problema dos applets de demo do site da Oracle.

Obrigado!

9 Respostas

E

Olhando essa página que você olhou no site da Oracle, dá para entender por que ela não funciona. Uma coisa é que o pessoal da Oracle nunca deve ter revisado essa página desde a versão 5.0 do Java :slight_smile: - já estamos no Java 7.0, e caminhando para o Java 8.0.

<applet code="GraphicsTest.class" height="400" width="400">alt="Your browser understands the &lt;APPLET&gt; tag but isn't running the applet, for some reason." Your browser is completely ignoring the &lt;APPLET&gt; tag!</applet>

Desde a versão 5.0 do Java, applets não devem ser carregados usando o nome do arquivo (nesse caso GraphicsTest.class) e sim o nome da classe a ser carregada (olhando o fonte, o nome da classe é GraphicsTest).
O que ocorre é que se você tentar usar GraphicsTest.class, ele tenta achar uma classe com o nome “class” e com o package “GraphicsTest”.
Como você deve se lembrar, o nome “class” é proibido para uma classe, senão você teria algo como:

public class class {
}
S

Entendi, realmente eu estava estudando e tanto no livro quando nos exemplos que achei pela net se usa o .class, pois como vc disse antigamente era assim.

Vou realizar a mudança e ver se dá certo.

Valeu pela dica!

S

Amigo aqui não deu certo, veja estou usando a seguinte tag dentro do jsp

<P>
            <applet codebase="web/WEB-INF/classes" code="br.com.clog.applet.HelloWorld" width=610 height=200></applet>
        </P>

Antes usava

<P>
            <applet codebase="web/WEB-INF/classes" code="br.com.clog.applet.HelloWorld.class" width=610 height=200></applet>
        </P>

Estou usando o código fonte do applet dentro do meu projeto web, vi em alguns lugares o pessoal gerando o applet em um projeto separado, criando um .jar e integrando no projeto web, qual seria a melhor solução?

Outra coisa ao clicar com o botão direito em cima do arquivo HelloWorld.java e pedindo para executar o appletview mostra o meu applet, olhando dentro da pasta do projeto o mesmo criou um HelloWorld.html onde o seu conteudo é

<HTML>
<HEAD>
   <TITLE>Página Applet HTML</TITLE>
</HEAD>
<BODY>

<!--
*** GENERATED applet HTML launcher - DO NOT EDIT IN 'BUILD' FOLDER ***

If you need to modify this HTML launcher file (e.g., to add applet parameters), 
copy it to where your applet class is found in the SRC folder. If you do this, 
the IDE will use it when you run or debug the applet.

Tip: To exclude an HTML launcher from the JAR file, use exclusion filters in 
the Packaging page in the Project Properties dialog.

For more information see the online help.
-->

<H3><HR WIDTH="100%">Página Applet HTML<HR WIDTH="100%"></H3>

<P>
<APPLET codebase="web/WEB-INF/classes" code="br/com/clog/applet/HelloWorld.class" width=350 height=200></APPLET>
</P>

<HR WIDTH="100%"><FONT SIZE=-1><I>Gerado por NetBeans IDE</I></FONT>
</BODY>
</HTML>

Obrigado pela ajuda!

S

Engraçado que quando clico no erro para mostrar os detalhes, nada de importante é mostrado apenas.

Plug-in Java 10.1.0.8
Usando versão JRE 1.7.0_01-b08 Java HotSpot(TM) Client VM
Diretório home do usuário = C:\Users\Junior
----------------------------------------------------
c:   limpar janela da console
f:   concluir objetos da fila de finalização
g:   coleta de lixo
h:   exibir esta mensagem de ajuda
l:   descartar lista de carregadores de classes
m:   imprimir uso de memória
o:   log do trigger
q:   ocultar console
r:   recarregar configuração da política
s:   descartar propriedades do sistema e de implantação
t:   descartar lista de threads
v:   descartar pilha de threads
x:   limpar cache do carregador de classes
0-5: definir nível de rastreamento como <n>
----------------------------------------------------
Detected from bootclasspath: C:\\PROGRA~1\\Java\\jre7\\lib\\deploy.jar
E

Applets não podem ser servidos desse diretório , que é completamente invisível para o browser (e por conseguinte invisível para o Java Plugin).
Qualquer coisa que fique sob WEB-INF não pode ser baixado. Você nunca se perguntou por que é que você não consegue baixar os .class das servlets e jsps para sua máquina? Pois é, é exatamente por causa disso.

Você deve copiar as classes para o mesmo diretório em que ficam as imagens ou outras coisas estáticas no seu site. (Eu costumo criar um diretório “applets” que é paralelo ao diretório “images”. )

O melhor é sempre:
a) Criar um jar para sua applet (mesmo que ele tenha apenas uma classe :slight_smile: )
b) Usar o atributo “archive” para especificar o lugar correto desse jar
c) Usar o atributo “code”
d) Não use, não use e não use o nome “.class” no atributo “code”. Como eu já tinha falado antes, não use.

E

Se eu fosse chato, iria dizer que você simplesmente não entendeu o que escrevi, porque você insistiu em pôr o nome de um arquivo:

code="br/com/clog/applet/HelloWorld.class"

em vez do nome de uma classe:

code="br.com.clog.applet.HelloWorld"

Mas como a vida é curta…

S

Deu certo, obrigado pela ajuda!

S

Um duvida é possível o applet retornar algum valor para meu jsp? Tipo digitar algo no applet e conseguir acessar esta informação?

Obrigado

E

Procure por “LiveConnect” (ou pacote ‘netscape.javascript’) - eu já tive de usar isso e não recomendo “muito”. É que isso envolve a interação de JavaScript e seu applet, o que costuma dar alguns problemas.

Criado 22 de novembro de 2011
Ultima resposta 22 de nov. de 2011
Respostas 9
Participantes 2