0

Java アプレットで厄介なエラーが発生します。私はアプレットに慣れていないので、これについてはまったく経験がないことに注意してください。

次のコードを含む index.html というラベルの付いた HTML ファイルがあります。

    <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 ファイルがあります。

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();
    }
}

同じディレクトリ内に、hey.wav と hey.gif というラベルの付いた 2 つのファイルがあります。

ページを実行すると、アプレットの読み込みに失敗し、メッセージのみが出力されますError. Click for details。クリックすると、次のように表示されます。

ランタイム例外

に続く...

java.lang.reflect.InvocationTargetException

Eclipse で実行するとすべてが機能しますが、これはエクスポートした場合にのみ機能します。必要に応じて詳細を追加します。

4

1 に答える 1

1

アプレットの 1 つの明確な問題は次のとおりです。

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

JavaDocs を見ると、次のようにgetImage(String)記載されています。

指定されたfileからピクセル データを取得する画像を返します。その形式は、GIF、JPEG、または PNG のいずれかです。基礎となるツールキットは、同じファイル名を持つ複数のリクエストを同じ返されたイメージに解決しようとします。

ファイルのハイライトは私の選択によるものでした。アプレットとファイルが一緒に使用されることはめったになく、このような状況には適していません。代わりに、Imageからアクセスする必要がありますURL

アプレットは代わりにApplet.getImage(URL)&を提供しますgetImage(URL,String)URL2 番目は、コード ベースまたはドキュメント ベースに関連するものを作成する必要がある場合に特に便利です。

画像が HTML と同じディレクトリにある場合、次の行に沿ったものを使用して読み込まれる可能性があります。

Image img = getImage(getDocumentBase(), "hey.gif");
于 2013-05-15T04:37:51.633 に答える