2

Java 小程序代码

package M257Applet

import java.applet.*;

import javax.swing.*;

import java.awt.*;

public class HellowApplet extends JApplet {

    public  void init(){

        Container cp = getContentPane();
        JLabel lb = new JLabel("Hellowwwww");
        cp.add(lb);
    }

}

.html 文件

<html>
<head>
<title>Applet</title>
</head>
<body>
<APPLET CODE = HellowApplet.class  WIDTH =  400   HEIGHT = 400 >
</APPLET>
</body>
</html>

错误

Java Plug-in 1.6.0_22
Using JRE version 1.6.0_22-b04 Java HotSpot(TM) Client VM
User home directory = C:\Users\pc
----------------------------------------------------
c:   clear console window
f:   finalize objects on finalization queue
g:   garbage collect
h:   display this help message
l:   dump classloader list
m:   print memory usage
o:   trigger logging
q:   hide console
r:   reload policy configuration
s:   dump system and deployment properties
t:   dump thread list
v:   dump thread stack
x:   clear classloader cache
0-5: set trace level to <n>
----------------------------------------------------


java.lang.NoClassDefFoundError: HellowApplet (wrong name: M257Applet/HellowApplet)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.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)
Exception: java.lang.NoClassDefFoundError: HellowApplet (wrong name: M257Applet/HellowApplet)
4

2 回答 2

11

问题出在包裹上。您需要更改小程序的代码属性,并且根据您放置 HTML 的位置,代码库属性也需要更改。您必须将 HellowApplet.class 放在名为 M257Applet 的目录中(因为这是您提供的包),并且 applet 标记应类似于:

<applet code="M257Applet.HellowApplet" ... ></applet>

为此,您的 HTML 必须与 M257Applet 位于同一目录中(不在 M257Applet 中)。或者,您可以指定 codebase 属性。例如,具有以下目录结构:

somedir
  +-- hello.html
  +-- M257Applet
  |    +-- HellowApplet.class

小程序将工作。但是,如果您有

anotherdir
  +-- hello.html
  +-- somedir
  |   +-- M257Applet
  |   |    +-- HellowApplet.class

那么你将不得不像这样指定代码库属性:

<applet code="M257Applet.HellowApplet" codebase="somedir" ... ></applet>

因此,您应该codebase指向包含您的包的目录,并且code必须在其中包含您的包名。

编辑:请注意,即使code="HellowApplet.class"会起作用,指定小程序的正确方法是最后没有“.class”。

于 2011-05-15T17:05:31.957 回答
3

你的班级在一个包里。它的文件名应该匹配。

code="M257Applet/HellowApplet.class"

(遵循约定是个好主意。包名应该全部小写。)

于 2011-05-15T16:50:47.357 回答