2013-06-07 3 views
0

현재 JFrame을 JApplet으로 변환하려고합니다.JApplet ClassNotFoundException

이클립스 애플릿으로 잘 실행되지만 내 웹 사이트에서 사용할 때 오류가 발생합니다. 당신은 아래가 내 자바 소스를 볼 ^^ 또는 수 http://tekhaxs.com/applet.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> 

이 오류를 해결하는 방법에 대한 제안 사항이 있으십니까?

답변

0

당신은 code 속성에 애플릿의 클래스 파일를 제공해야합니다 : 클래스 파일이 HTML 파일과 동일한 위치에있는 경우

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

이 작동합니다. 클래스 파일이 다른 위치에있는 경우 추가 codebase 속성을 사용하여 위치를 지정해야합니다 (예 : 클래스 파일이 bin 하위 디렉토리에있는 경우,

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

추가 정보 http://www.duckware.com/applets/reference.html를 참조 지정합니다. 기본적으로

,

  • codecode="com.example.SampleApplet.class"처럼, 어떤 패키지 이름을 포함한 주요 애플릿 클래스의 클래스를 의미하고, .class 접미사와.
  • codebasecode에 지정된 클래스 파일을 찾을 수있는 위치를 나타내는 URL입니다 (상대 또는 절대). html 파일과 동일한 위치에 있으면 codebase을 생략 할 수 있습니다.

now I am getting a different error.

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

애플릿의 코드 (코드에서 할 puu.sh에 액세스하는 데 필요한) 소켓을 사용하는 데 필요한 액세스 권한이 없습니다. 애플릿은 클라이언트 컴퓨터에서 실행되며 기본적으로 샌드 박스 외부에서 액세스 할 수 없습니다.

클라이언트 컴퓨터에 소위 정책 파일을 만들어 권한을 조정할 수 있습니다. 자세한 내용은 http://download.java.net/jdk8/docs/technotes/guides/security/PolicyFiles.html을 참조하십시오. 이 작업은 클라이언트 측에서 수행해야합니다.

애플릿이있는 서버와 동일한 서버에 이미지를 저장하려고합니다. 그런 다음 보안 정책을 수정하지 않고 다운로드 할 수 있어야합니다.

+0

나에게도 같은 오류가 발생합니다. – user2067774

+0

서버를 지정하지 마십시오. 서버가 html 파일을 호스팅하는 서버와 동일한 경우에는 필요하지 않습니다. 어떤 이유로 든 서버를 지정하는 것이 필요한 경우,'codebase' 속성에서이 작업을 수행해야합니다. –

+0

http://tekhaxs.com/compsci/gwas.html 파일을이 디렉토리에 업로드했으며 현재 실행중인 것 같습니다. 하지만 이제는 다른 오류가 발생합니다. 액세스가 거부되었습니다 ("java.net.SocketPermission" "Puu.sh:80" "connect, ressolve") – user2067774