Dúvida com applet em projeto web

6 respostas
dahenz

Bom dia!

Estou desenvolvendo uma aplicação Web Dinâmica e gostaria de utilizar um applet na tela index.jsp.

Para isso, criei um pacote applets onde minhas classes de applet ficarão dispostas, e chamo esse applet no arquivo jsp através da tag , mas como é um sistema Web Dinâmico, eu gero o arquivo compilado .class e copio para dentro da pasta webapp, o problema, está na hora de executar a tela index.jsp, pois não aparece a aplicação e sim um erro como segue:

---------------------------------------------------- java.lang.NoClassDefFoundError: HelloSwing (wrong name: br/com/eucatur/vieweb/applet/HelloSwing) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source) at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source) at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Exception: java.lang.NoClassDefFoundError: HelloSwing (wrong name: br/com/eucatur/vieweb/applet/HelloSwing)

Copiei o arquivo compilado para a pasta C:\java\eclipse\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps e mesmo assim o mesmo erro…

O que falta ser feito???

Obrigado…

6 Respostas

T

O atributo CODE da tag APPLET não deve ser inicializado com o nome do arquivo (HelloSwing.class) e sim com o nome da classe (br.com.eucatur.vieweb.applet.HelloSwing). É que muita gente ensina a pôr o “.class” nesse atributo, mas a partir do Java 5 o Sun Plugin tenta é carregar uma classe chamada “class”, que obviamente não pode ser escrita diretamente em Java, já que “class” é uma palavra-chave.

N

Seria como usar java no shell para executar com a extensão .class

dahenz

Olá thingol…

Fiz o que me recomendou, agora tenho uma dúvida: No parâmetro code estou apontando a classe compilada? Ou apenas o código java…

Pelo que andei observando em alguns exemplos, a classe compilada deve ficar na mesma pasta do arquivo jsp…

Continuou dando o erro…

Obrigado…

dahenz

Estou simplificando......

Segue um exemplo muito básico.....

Criei um arquivo html e atribui o nome: hello_applet.html. Nesse arquivo coloquei um simples código....

<html>
<body>
   <applet code="HelloApplet"></applet>
</html>
</body>

Fiz isso em um notepad normal.....

Logo em seguida fiz a classe de applet para execução no browser... simples simples.....

import java.applet.Applet;
import java.awt.Graphics;

public class HelloApplet extends Applet{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	public void paint(Graphics g){
		
		g.drawString("Hello Applet World", 200, 25);
		
	}
	
}

Também no notepad.... E vejam... não atribui a classe a pacote algum... ou seja... a classe está no pacote default......

Compilei o arquivo .java utilizando o javac da jdk e executei o arquivo hello_applet no browser......

Agora não traz erros, mas também não mostra minha simplória mensagem... :)

Onde eu errei... hehe obrigado...

fantomas

dahenz:
Agora não traz erros, mas também não mostra minha simplória mensagem…

Essa eu sei :stuck_out_tongue:

g.drawString(“Hello Applet World”, 200, 25);

As posições 200, 25 estão fora da àrea default do applet, tente colocar 20, 25; a mensagem vai aparecer.

Utilize a opção (no eclipse) executar como applet; será utilizado o AppletViewer, assim vc poderá testar sua applet antecipadamente.

flws

fantomas

Deixa eu dar meu pitado sobre o outro problema.

Notei que havia o path da sua classe ( br/com/eucatur/vieweb/applet/HelloSwing ) na exception que vc informou, logo, o que deve estar acontecendo é o seguinte:

Na tag html vc deve ter indicado a classe junto com o path dela ( br.com.eucatur.vieweb.applet.HelloSwing ), logo, a JVM deve procurar pela classe nesta localidade e claro que ela não existe neste local; o que existe é apenas o arquivo .class na pasta onde vc a colocou. Perceba que quando vc indica apenas o nome de uma classe que não tem o path ( HelloSwing.class ) a coisa funciona, e também tem a indicação na exception dizendo que o tipo de erro é classe não encontrada ( java.lang.NoClassDefFoundError ).

A alternativa que conheço para resolver esta situação é a de colocar as classes em um arquivo .jar e indica-lo na tag applet da página, como ele mantem a estrutura dos paths das classes a JVM certamente irá encontrar suas classes.

flws

Criado 17 de abril de 2009
Ultima resposta 17 de abr. de 2009
Respostas 6
Participantes 4