简单的JApplet获取" NoClassDefFoundError"并且不知道它来自哪里

时间:2014-03-29 07:07:07

标签: java swing noclassdeffounderror japplet

我正在尝试使用Java applet创建一个sideshow程序,当我使用eclipse制作和查看JApplet时一切正常但是当我在浏览器中运行代码时,我得到{{1}这意味着我的程序的某些部分在NoClassDefFoundError中未定义。

这是我的代码:

JApplet

我的HTML代码

import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.*;
import javax.imageio.*;
import javax.swing.*;

public class Applet extends JApplet {
    private int i = 0;
    private Button prev = new Button("prev");
    private Button next = new Button("next");

    public void init() {
        setSize(1100, 875);
        prev.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                if (i == 0)
                    i = getList().length - 1;
                else
                    i--;
                repaint();
            }
        });

        next.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                if (i == getList().length - 1)
                    i = 0;
                else
                    i++;
                repaint();
            }
        });

        Panel buttons = new Panel();
        buttons.setLayout(new FlowLayout());
        buttons.add(prev);
        buttons.add(next);
        setLayout(new BorderLayout());
        add("South", buttons);
    }

    public void paint(Graphics g) {
        setImg(g, getImgPath());
    }

    public String[] getList() {
        String[] str = { "./ (1).jpg", "./ (2).jpg", "./ (3).jpg","./ (4).jpg","./ (5).jpg","./ (6).jpg","./ (7).jpg","./ (8).jpg" };
        return str;
    }

    public String getImgPath() {
        return getList()[i];
    }

    public void setImg(Graphics g, String str) {
        try {
            URL url = new URL(getCodeBase(), str);
            BufferedImage img = ImageIO.read(url);
            g.drawImage(img, 50, 50, null);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

截屏: enter image description here

下载所有内容: https://www.dropbox.com/s/v0jqui0nomfb4zx/Code.zip

我的问题是我的程序的哪一部分未定义为JApplet

谢谢。

1 个答案:

答案 0 :(得分:4)

符号$Applet$1指的是anonymous inner class,可能是您的小程序ActionListener。您的HTML需要指定包含所有类的JAR的位置,而不仅仅是封闭类。以下是需要考虑的几件事:

  • 为了便于开发,请将您的小程序设为hybrid

  • 使用,如second example所示,以便于部署。

  • 不要使用现有的超类名称,例如Applet,为您的子类。