首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JApplet ClassNotFoundException

JApplet ClassNotFoundException
EN

Stack Overflow用户
提问于 2013-06-07 16:36:08
回答 1查看 240关注 0票数 0

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

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

这是我的小程序:http://tekhaxs.com/applet.java

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

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

代码语言:javascript
复制
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代码。

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

对如何修复这个错误有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2013-06-07 16:41:15

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

代码语言:javascript
复制
<applet code="applet.class" width="400" height="400">

如果类文件与您的html文件位于相同的位置,这应该会起作用。如果类文件位于其他位置,则需要通过附加的codebase属性指定位置,例如,如果类文件位于bin子目录中,则指定

代码语言:javascript
复制
<applet code="applet.class" codebase="bin" width="400" height="400">

有关更多信息,请参见http://www.duckware.com/applets/reference.html

本质上,

  • code指的是主小程序类的类,包括任何包名,并且带有URL后缀,就像在code="com.example.SampleApplet.class".
  • codebase中一样,是一个.class (相对或绝对),它指的是可以找到在code中指定的类文件的位置。如果它与html文件的位置相同,则可以省略codebase

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

代码语言:javascript
复制
Access denied ("java.net.SocketPermission""Puu.sh:80""connect,ressolve")

您的小程序代码没有使用套接字所需的访问权限(这是在代码中访问puu.sh所必需的)。请注意,applet在客户机上运行,默认情况下,不允许它们访问其沙箱之外的任何内容。

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16979667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档