2013-05-15 40 views
0

我得到一个恼人的错误我的Java小程序。我是小程序的新手,所以请注意,我对此没有经验。JApplet的错误,我似乎无法修复

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

当我执行小应用程序无法加载的页面,仅输出消息Error. Click for details。当我点击,它说:

的RuntimeException

其次...

java.lang.reflect.InvocationTargetException

一切正常,当我运行它在Eclipse中,但它只在我导出时执行此操作。如果需要,我会添加更多细节。

+1

你能发布_full_堆栈跟踪。异常类没有太大的帮助。 –

+0

没有其他堆栈跟踪,即使我点击详细信息它只是返回一个控制台与基本的帮助命令,但没有任何关系的代码。 –

+0

你的applet代码中有一个bug。它是什么,我不知道,因为我们无法看到该代码。 –

回答

1

一个applet中明确的问题是:

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

如果你看JavaDoc中getImage(String)它指出:

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

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

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

如果图像位于同一目录中的HTML,它可能使用的线沿线的东西被加载:

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

解决了这个问题,谢谢! –

相关问题