Java applet错误...什么是错的?

问题描述:

的Java applet代码Java applet错误...什么是错的?

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) 
+0

Prince 2011-05-15 16:42:54
+0

'的JLabel( “Hellowwwww”);'注意字'你好'没有'w',更不用说其中4个了! – 2011-05-15 17:12:38

+0

@安德鲁·汤普森:“Hellowwwww”是一种声带回声,可能是乐队的名字。 :-) – trashgod 2011-05-15 17:44:21

问题是包。您需要更改applet的代码属性,并根据您放置HTML的位置,代码属性。你必须把HellowApplet.class在一个叫M257Applet目录(因为这是你给包),和小程序标记应该是这个样子:

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

对于这个工作,你的HTML必须是在与M257Applet相同的目录(不在M257Applet中)。或者,您可以指定代码库属性。对于例如,具有以下目录结构:

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

小程序将正常工作。但是,如果你有

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

,那么你必须指定codebase属性,像这样:

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

所以,你应该有codebase指向的目录包含你的包,并code必须有你包名也在里面。

编辑: 请注意,尽管code="HellowApplet.class"可以正常工作,但指定小应用程序的正确方法是在末尾没有“.class”。

+1

很好的路径描述。请注意,'M257Applet.HellowApplet.class'的''code'属性应该是该类的完全限定名称,所以'M257Applet.HellowApplet'。当然要考虑到常见术语和拼写 - 'm257applet.HelloApplet';) – 2011-05-15 17:17:45

+0

感谢所有:) :) – Prince 2011-05-15 17:24:16

+1

'code =“M257Applet.HellowApplet.class”'应该最好是'code =“M257Applet.HellowApplet”'。它代表完全合格的类名。第一种形式是容忍的,但不正确。 – 2012-09-08 02:10:07

你的类是在一个包。它的文件名应该匹配。

code="M257Applet/HellowApplet.class" 

(这是按照约定一个好主意。包名应该全部小写)。

+0

谢谢所有:) :) – Prince 2011-05-15 17:24:24