我的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中运行它时,一切都有效,但它只在我导出它时才这样做。如果需要,我会添加更多细节。
答案 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");