JApplet ClassNotFoundException

时间:2013-06-07 08:36:08

标签: java japplet

我目前正在尝试将JFrame转换为JApplet。

它作为applet在eclipse中运行良好但是当我尝试在我的网站上使用它时它给了我一个错误。

这是我的Applet:http://tekhaxs.com/applet.java

您可以在^^或以下查看我的java源代码。

这是错误:http://tekhaxs.com/?page_id=146

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JApplet;
import javax.swing.JButton;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import javax.imageio.ImageIO;

public class applet extends JApplet
{
    JButton newBut = new JButton("New");
    JButton backBut = new JButton("Back");
    Font font;

    BufferedImage img = null;
    BufferedImage background = null;

    URL url = null;

    String extension;

    int linkNum = 0;
    int total = 0;
    int backNum = 0;
    String appending;

    ArrayList<String> az = new ArrayList<String>();
    ArrayList<String> history = new ArrayList<String>();



public void init()                  //initialize everything.
{
    this.setLayout(null);

    backBut.addActionListener(new buttonListener());
    this.add(backBut);
    backBut.setBounds(300, 5, 80, 35);

    newBut.addActionListener(new buttonListener());
    this.add(newBut);
    newBut.setBounds(400, 5, 80, 35);

    font = new Font("arial",Font.BOLD,20);
    makeArrays();
    changeUrlExtension();

    try {
        background = ImageIO.read(new URL("http://puu.sh/3a7KY/d2ba48949c.png"));
    } catch (IOException e) {
        e.printStackTrace();
    }
}

class buttonListener implements ActionListener  //Button Listener for next.
{

    @Override
    public void actionPerformed(ActionEvent e) 
    {
        if(e.getSource() == backBut){
            backNum++;
            extension = history.get(total - backNum - 1);
            repaint();
        }else if(e.getSource() == newBut){
            backNum = 0;
            changeUrlExtension();
            history.add(extension);
            total++;
            repaint();
        }
    }

}

public void changeUrlExtension(){
    int a1 = (int) Math.round(Math.random() * 51);
    int a2 = (int) Math.round(Math.random() * 51);
    int a3 = (int) Math.round(Math.random() * 51);
    String aaa = (az.get(a3)+az.get(a2)+az.get(a1));
    int linkNum = (int) Math.round(Math.random() * 13) + 20;

    extension = linkNum+aaa;

    try {
        url = new URL("http://puu.sh/"+extension+".png");
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }
}

public void paint(Graphics g) {                 //Paints Graphics for frame.
   g.drawImage(background, 0, 0, null);
   g.drawImage(getImage(), 5, 50, null);
   g.setColor(Color.MAGENTA);
   g.drawString("Current Picture: http://puu.sh/"+extension+".png", 10,40);
   g.setFont(font);
   g.drawString("Picture Number: "+(total - backNum), 10,20);
}

public Image getImage(){                        //Returns Image from url.
    try {
        url = new URL("http://puu.sh/"+extension+".png");
    } catch (IOException e) {
        e.printStackTrace();
    }


    try {
        img = ImageIO.read(url);
        System.out.println(total+". "+url);
    } catch (IOException e) {
        changeUrlExtension();
        getImage();
    }

    return img;
}

public void makeArrays(){                       //Makes az Array.
      az.add("A");
      az.add("a");
      az.add("B");
      az.add("b");
      az.add("C");
      az.add("c");
      az.add("D");
      az.add("d");
      az.add("E");
      az.add("e");
      az.add("F");
      az.add("f");
      az.add("G");
      az.add("g");
      az.add("H");
      az.add("h");
      az.add("I");
      az.add("i");
      az.add("J");
      az.add("j");
      az.add("K");
      az.add("k");
      az.add("L");
      az.add("l");
      az.add("M");
      az.add("m");
      az.add("N");
      az.add("n");
      az.add("O");
      az.add("o");
      az.add("P");
      az.add("p");
      az.add("Q");
      az.add("q");
      az.add("R");
      az.add("r");
      az.add("S");
      az.add("s");
      az.add("T");
      az.add("t");
      az.add("U");
      az.add("u");
      az.add("V");
      az.add("v");
      az.add("W");
      az.add("w");
      az.add("X");
      az.add("x");
      az.add("Y");
      az.add("y");
      az.add("Z");
      az.add("z");    
}
}

这是我用来调用JApplet的html代码。

<applet code="http://tekhaxs.com/applet.java" width="400" height="400">
If your browser was Java-enabled, a Puush Browser would appear here.
</applet>

有关如何解决此错误的任何建议?

1 个答案:

答案 0 :(得分:0)

您需要在code属性中提供小程序的类文件

<applet code="applet.class" width="400" height="400">

如果类文件与html文件位于同一位置,则此方法应该有效。如果类文件位于其他位置,则需要通过其他codebase属性指定位置,例如如果类文件位于bin子目录中,请指定

<applet code="applet.class" codebase="bin" width="400" height="400">

有关其他信息,请参阅http://www.duckware.com/applets/reference.html

基本上,

  • code指的是主applet类的类,包括任何包名称,以及.class后缀,例如code="com.example.SampleApplet.class"
  • codebase是一个URL(相对或绝对),它指的是可以找到code中指定的类文件的位置。如果它与html文件的位置相同,则可以省略codebase

  

现在我收到了一个不同的错误。

Access denied ("java.net.SocketPermission""Puu.sh:80""connect,ressolve")

您的applet代码没有使用套接字的必要访问权限(访问puu.sh所需的访问权限)。请注意,applet正在客户端计算机上运行,​​默认情况下,它们不允许在其沙箱之外进行任何访问。

您可以通过在客户端计算机上创建所谓的策略文件来调整权限 - 有关详细信息,请参阅http://download.java.net/jdk8/docs/technotes/guides/security/PolicyFiles.html。请注意,这需要在客户端完成。

我会尝试将图片放在applet所在的同一台服务器上。然后,您应该能够在不修改安全策略的情况下下载它们。