错误: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标记中的包部分: