错误:java.lang.NoClassDefFoundError:Chase(错误名称:pong / Chase)

我使用Eclipse IDE创建了一个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中创建了新项目并将程序打包到“pong”文件夹中。

谁能解释为什么会出现这个错误?

编辑:

添加一些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 { ... } 

类路径中没有类名Chase

wrong name指定包含指定包的类名可能有错误。

如果你的类声明package例如

 package a; public class MyApplet extends Applet{} 

然后在HTML中给出一个a.MyApplet

更新

在你的情况下似乎

也应该是dir结构

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

如果包名是pong会这样做

我认为这个问题基本上就像@Jigar Joshi所指出的那样,但是有一点点皱纹。 我认为你有一个FQN为“pong.Chase”的类,但你已经设置了类路径,以便包含“Chase.class”的目录在类路径上。 然后你告诉applet加载器寻找一个类“Chase.class”。

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

修复是为了确保“pong”目录的父目录在类路径上,并使用:

  

或者 – 使用codeBase属性。

或者2 – 删除Java类中的package声明。

或者3 – 使用元素。 不推荐使用元素。

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

您忘记了applet标记中的包部分: