[英]JApplet ClassNotFoundException
我目前正在嘗試將我的JFrame變成JApplet。
它在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>
關於如何解決此錯誤的任何建議?
您需要在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是必需的)。 請注意,小程序正在客戶端計算機上運行,並且默認情況下,不允許它們在沙箱外部進行任何訪問。
您可以通過在客戶端計算機上創建所謂的策略文件來調整特權-有關更多信息,請參見http://download.java.net/jdk8/docs/technotes/guides/security/PolicyFiles.html 。 請注意,這需要在客戶端完成。
我會嘗試將圖像放在您的小程序所在的同一台服務器上。 然后,您應該能夠下載它們而無需修改安全策略。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.