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

时间:2011-01-24 09:24:01

标签: java

我使用Eclipse IDE创建了一个applet程序。现在我正在创建.html文件,如下所示:

<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中创建了新项目并将程序打包到“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
{ ...  }

3 个答案:

答案 0 :(得分:8)

类路径中没有类名Chase

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

如果您的类声明package例如

package a;
public class MyApplet extends Applet{}

然后在HTML中提供a.MyApplet

<强>更新

在你的情况下似乎

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

也应该是dir结构

- - - - -
      |
      |-your html file
      |-pong folder
          |
          |- Chases.class
如果包名称为pong

将会执行

答案 1 :(得分:2)

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

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

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

<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

答案 2 :(得分:0)

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

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