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)
问题是包。您需要更改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”。
很好的路径描述。请注意,'M257Applet.HellowApplet.class'的''code'属性应该是该类的完全限定名称,所以'M257Applet.HellowApplet'。当然要考虑到常见术语和拼写 - 'm257applet.HelloApplet';) – 2011-05-15 17:17:45
感谢所有:) :) – Prince 2011-05-15 17:24:16
'code =“M257Applet.HellowApplet.class”'应该最好是'code =“M257Applet.HellowApplet”'。它代表完全合格的类名。第一种形式是容忍的,但不正确。 – 2012-09-08 02:10:07
你的类是在一个包。它的文件名应该匹配。
code="M257Applet/HellowApplet.class"
(这是按照约定一个好主意。包名应该全部小写)。
谢谢所有:) :) – Prince 2011-05-15 17:24:24
'的JLabel( “Hellowwwww”);'注意字'你好'没有'w',更不用说其中4个了! – 2011-05-15 17:12:38
@安德鲁·汤普森:“Hellowwwww”是一种声带回声,可能是乐队的名字。 :-) – trashgod 2011-05-15 17:44:21