2011-01-24 18 views
6

He creado un programa de applet utilizando Eclipse IDE. Ahora im creación .html archivo de la siguiente manera:Error: java.lang.NoClassDefFoundError: Chase (nombre incorrecto: pong/Chase)

<html> 
<APPLET CODE="Chase.class" width=500 height=400> 
</APPLET> 
</html> 

Cuando Im ejecutar este archivo de la im error al obtener es:

java.lang.NoClassDefFoundError: Chase (wrong name: pong/Chase) 
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) 

En Eclipse IDE se han creado nuevos proyectos y envasados ​​en el programa "pong" carpeta.

¿Alguien puede explicar por qué ocurre este error?

Editar:

Añadiendo pocas líneas de código Chase.java, para su aclaración. Es simple applet:

package pong; 


import java.applet.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.util.Random; 



public class Chase extends Applet implements Runnable 
{ ... } 
+0

http://stackoverflow.com/questions/3298988/java-lang-noclassdeffounderror-when-trying-to-embed-an-applet –

Respuesta

8

no hay ningún nombre de clase Chase en la ruta de clases.

wrong name especifica que puede haber un error con el nombre de la clase con el paquete especificado.

si su clase declara package por ejemplo

package a; 
public class MyApplet extends Applet{} 

entonces en HTML dan a.MyApplet

actualización

en su caso parece

<APPLET CODE="pong.Chase.class" width=500 height=400>

también la estructura de directorio debe haber

- - - - - 
     | 
     |-your html file 
     |-pong folder 
      | 
      |- Chases.class 

compromiso Si el nombre del paquete es pong

+0

trató de usar la ayuda. El error sigue siendo algo así como: oad: class pong/Chase.class no encontrado. java.lang.ClassNotFoundException: pong.Chase.class \t en sun.plugin2.applet.Applet2ClassLoader.findClass (origen desconocido) \t en java.lang.ClassLoader.loadClass (origen desconocido) \t en java.lang.ClassLoader .loadClass (Fuente desconocida) \t en sun.plugin2.applet.Plugin2ClassLoader.loadCode (Fuente desconocida) .... etc – GamDroid

+0

verifique la actualización .................... ..... –

+0

Sí, el nombre del paquete es "pong" y después de realizar los pasos anteriores, funciona cuando se ejecuta de forma independiente. Sin embargo, cuando tengo que agregar un código html personalizado en una página web personalizada de un sitio web, el error es el mismo que el anterior. – GamDroid

0

Se le olvidó la parte paquete en su etiqueta applet:

<APPLET CODE="pong.Chase.class" width=500 height=400> 
</APPLET> 
2

Creo que el problema es básicamente como @Jigar Joshi lo ha notado, pero con una pequeña arruga. Creo que tienes una clase cuyo FQN es "pong.Chase", pero has configurado el classpath para que el directorio que contiene "Chase.class" esté en el classpath. Luego, le dijo al cargador de applet que busque una clase como "Chase.class".

El cargador de clases ha encontrado el archivo de código de bytes, pero luego, cuando intentó cargarlo, se dio cuenta de que las clases FQN son "pong.Chase" en lugar de "Chase" ... como se deduce del nombre que dio . Ergo ... a NoClassDefFoundError, con un mensaje que le dice que el nombre de clase es incorrecto.

La solución es asegurarse de que el directorio padre del directorio "pong" está en la ruta de clases, y el uso de:

<APPLET CODE="pong.Chase.class" width=500 height=400></APPLET> 

alternativa - utilizar el atributo codeBase.

Alternativamente 2 - deshacerse de la declaración package en su clase de Java.

Alternativamente 3 - use el elemento <object>. El elemento <applet> está en desuso.

Referencia: http://www.w3.org/TR/html401/struct/objects.html

+0

, la alternativa 2 funciona sin dudas. Tengo que agregar este fragmento de código de applet en una página web. Cuando se agrega, el error es el mismo que antes. Pero cuando el archivo html se ejecuta de manera independiente, funciona. ¿Por que es esto entonces? – GamDroid

+0

@GamDroid - Sospecho que es la estructura del directorio; ver la respuesta actualizada de @Jigar Joshi. –

Cuestiones relacionadas