JApplet错误,我似乎无法修复

时间:2013-05-15 02:42:29

标签: java web applet japplet invocationtargetexception

我的Java applet出现了恼人的错误。我是applets的新手,所以请注意我对此并不熟悉。

我有一个标记为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的文件。

当我执行页面时,applet无法加载,只输出消息Error. Click for details。当我点击时,它说:

  

的RuntimeException

接着是......

  

java.lang.reflect.InvocationTargetException

当我在Eclipse中运行它时,一切都有效,但它只在我导出它时才这样做。如果需要,我会添加更多细节。

1 个答案:

答案 0 :(得分:1)

小程序中的一个明确问题是:

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

如果您查看getImage(String)的JavaDocs,请说明:

  

返回从指定的文件获取像素数据的图像,其格式可以是GIF,JPEG或PNG。底层工具包尝试将具有相同文件名的多个请求解析为同一返回的Image。

文件的亮点是我选择的。小程序和文件很少一起使用,并不适合这种情况。相反,Image必须由URL访问。

Applet提供Applet.getImage(URL)&amp; getImage(URL,String)。当我们需要相对于代码库或文档库形成URL时,第二个特别方便。

如果图像与HTML位于同一目录中,则可能会使用以下内容加载:

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