Ошибка Java-апплета ... Что не так? - PullRequest
1 голос
/ 15 мая 2011

Код 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>

Error

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)

Ответы [ 2 ]

12 голосов
/ 15 мая 2011

Проблема с пакетом. Вам нужно изменить атрибут кода апплета, и в зависимости от того, где вы разместили свой HTML, атрибут кодовой базы тоже. Вы должны поместить HellowApplet.class в каталог с именем M257Applet (потому что это пакет, который вы дали), и тег апплета должен выглядеть примерно так:

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

Чтобы это работало, ваш HTML должен находиться в том же каталоге, что и M257Applet (не внутри M257Applet). Кроме того, вы можете указать атрибут codebase. Например, со следующей структурой каталогов:

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

апплет будет работать. Однако, если у вас было

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

тогда вам нужно будет указать атрибут codebase следующим образом:

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

Итак, вы должны иметь codebase, указывающий на каталог, содержащий ваш пакет, и code также должен содержать имя вашего пакета.

Edit: Обратите внимание, что, хотя code="HellowApplet.class" будет работать, правильный способ указания апплета - без ".class" в конце.

2 голосов
/ 15 мая 2011

Ваш класс в пакете.Имя файла должно совпадать.

code="M257Applet/HellowApplet.class"

(Рекомендуется следовать соглашениям. Все имена пакетов должны быть в нижнем регистре.)

...