2011-01-24 76 views
6

我使用Eclipse IDE创建了一个applet程序。现在我正在创建的.html如下文件:错误:java.lang.NoClassDefFoundError:Chase(错误的名称:pong/Chase)

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

时,即时通讯执行此文件中的错误即时得到的是:

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) 

在Eclipse IDE中创建新项目,并打包成节目“傍”夹。

任何人都可以解释为什么这个错误发生?

编辑:

添加几Chase.java行代码,进行澄清。这是简单的小程序:

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 – 2011-01-24 09:26:14

回答

8

在你的类路径中没有类名Chase

wrong name指定指定包可能会出现类名错误。

,如果你的类声明package例如

package a; 
public class MyApplet extends Applet{} 

然后在HTML给a.MyApplet

更新你的情况

似乎

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

也目录结构应该是

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

会做,如果包的名称是pong

+0

试图使用帮助。错误仍然是:oad:没有找到class pong/Chase.class。 抛出java.lang.ClassNotFoundException:pong.Chase.class \t在sun.plugin2.applet.Applet2ClassLoader.findClass(未知来源) \t在java.lang.ClassLoader.loadClass(未知来源) \t在java.lang.ClassLoader中.loadClass(未知来源) \t at sun.plugin2.applet.Plugin2ClassLoader.loadCode(未知来源)....等 – GamDroid 2011-01-24 09:43:09

+0

检查更新.................... ..... – 2011-01-24 09:45:46

0

你忘了包的一部分在你的applet标记:

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

我觉得现在的问题是基本上为@Jigar Joshi指出,但略有起皱。我认为你有一个FQN是“pong.Chase”的类,但是你已经设置了类路径,以便包含“Chase.class”的目录位于类路径中。然后,你已经告诉小程序加载器寻找一个类为“Chase.class”。

类加载器找到了字节码文件,但是当它试图加载它时,它已经注意到类FQN是“pong.Chase”而不是“Chase”......正如你给出的名字推断的那样。 Ergo ... a NoClassDefFoundError,消息告诉你类名不正确

解决办法是确保在“傍”目录的父目录是在classpath中,并使用:

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

或者 - 使用codeBase属性。

或者2 - 在Java类中删除package声明。

或者3 - 使用<object>元素。 <applet>元素已弃用。

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