我正在尝试使用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();
}
}
}
截屏:
下载所有内容: https://www.dropbox.com/s/v0jqui0nomfb4zx/Code.zip
我的问题是我的程序的哪一部分未定义为JApplet
谢谢。
答案 0 :(得分:4)
符号$Applet$1
指的是anonymous inner class,可能是您的小程序ActionListener
。您的HTML需要指定包含所有类的JAR的位置,而不仅仅是封闭类。以下是需要考虑的几件事:
为了便于开发,请将您的小程序设为hybrid。
使用java-web-start,如second example所示,以便于部署。
不要使用现有的超类名称,例如Applet
,为您的子类。