2013-05-15 2 views
0

Java 애플릿에 대한 성가신 오류가 발생합니다. 나는 애플릿에 익숙하지 않으므로이 점에 대해서는 경험이 없다.해결할 수없는 JApplet 오류

나는 다음과 같은 코드를 index.html을로 표시 HTML 파일이 있습니다

package shawn; 

import java.applet.AudioClip; 
import java.awt.*; 
import java.io.File; 
import java.io.Serializable; 
import javax.swing.*; 

public class Main extends JApplet implements Serializable { 

     Image img = Toolkit.getDefaultToolkit().getImage("hey.gif"); 

     @Override 
     public void init(){ 
      playSound(); 
     } 

     @Override 
    public void paint(Graphics g) { 
     g.drawImage(img, 0, 0, this); 
    } 

    public void playSound(){ 
     AudioClip ac = getAudioClip(getCodeBase(), "hey.wav"); 
     ac.play(); 
    } 
} 
:

<HTML> 
    <HEAD> 
      <TITLE>Applet JAR Example 
     </TITLE> 
    </HEAD> 
    <BODY> 
     <CENTER> 
      <B>Are YOU ready to dance?? 
      </B> 
      <BR> 
       <BR> 

       <APPLET CODE="shawn/Main.class" ARCHIVE="lol.jar" 
         WIDTH=400  
       HEIGHT=300>  
</APPLET> 
</CENTER> 
</BODY> 
</HTML> 

같은 디렉토리를 다음 코드로 lol.jar로 표시 jar 파일이

동일한 디렉토리 내에 hey.wav 및 hey.gif라는 파일이 두 개 있습니다.

페이지를 실행할 때 애플릿이로드되지 않아 메시지 Error. Click for details 만 출력됩니다. 나는 그것을 실행할 때

모든 작품

의 RuntimeException

에 의해 ...

java.lang.reflect.InvocationTargetException 다음 : 내가 클릭하면 말한다 이클립스에서,하지만 그것을 내보낼 때이 작업을 수행합니다. 필요한 경우 자세한 내용을 추가하겠습니다. 애플릿에서

+1

당신이 _full_의 스택 트레이스를 게시 할 수 있습니다. 예외 수업은별로 도움이되지 않습니다. –

+0

다른 스택 트레이스가 없습니다. 세부 정보를 클릭해도 필수적인 도움말 명령이 포함 된 콘솔 만 반환되지만 코드와 관련된 내용은 전혀 없습니다. –

+0

애플릿의 코드에 버그가 있습니다. 그것이 무엇인지, 나는 우리가 그 코드를 볼 수 없으므로 잘 모른다. –

답변

1

한 가지 확실한 문제는 다음과 같습니다

Image img = Toolkit.getDefaultToolkit().getImage("hey.gif"); 

당신이 getImage(String)의 JavaDoc을 보면 그 상태 :

지정된 파일에서 픽셀 데이터를 취득하는 이미지를 돌려, 형식은 GIF, JPEG 또는 PNG 일 수 있습니다. 기본 툴킷은 동일한 파일 이름을 가진 여러 요청을 동일한 반환 된 이미지로 확인하려고 시도합니다.

하이라이트는 나의 선택에 의한 것이 었습니다. 애플릿과 파일은 거의 함께 사용되지 않으며이 상황에 적절하지 않습니다. 대신 ImageURL으로 액세스해야합니다.

애플릿 대신 Applet.getImage(URL) & getImage(URL,String)이 있습니다. 2 번째 코드는 코드베이스 나 문서베이스와 관련하여 URL을 형성해야 할 때 특히 편리합니다.

이미지가 HTML과 같은 디렉토리에있는 경우, 그것은의 라인을 따라 뭔가를 사용하여로드 될 수 있습니다

Image img = getImage(getDocumentBase(), "hey.gif"); 
+0

그 문제가 고쳐졌습니다, 감사합니다! –