java.lang.reflect.InvocationTargetException

时间:2012-07-04 08:41:22

标签: java html applet invocationtargetexception

我有一个带有一些按钮的小程序,按钮有图像图标。我也用这个小程序制作了一个HTML文件。每当我从服务器(Apache tomcat)打开此页面时,都会发生异常:

java.lang.reflect.InvocationTargetException.

但如果我没有图标运行,就没有问题。任何人都可以帮助我,以便我可以使用按钮图标加载小程序吗?

Image myImage = getToolkit().createImage("image/REC1.jpg");

ImageIcon myIcon = new ImageIcon(myImage);
button.setIcon(myIcon);

2 个答案:

答案 0 :(得分:1)

Toolkit.createImage(String)

  

返回从指定的文件获取像素数据的图像。返回的Image是一个新对象,不会与此方法的任何其他调用者或其getImage变体共享。

     

此方法首先检查是否安装了安全管理器。如果是,则该方法使用指定的文件调用安全管理器的checkRead方法,以确保允许创建映像。

我做了两部分粗体:

  • 文件 - 仅指向运行小程序的计算机的本地文件系统。因此不适合applet中的图标 - 它们必须位于服务器上。和..
  • 安全管理器 - 不允许沙盒applet读取或写入本地文件系统。这可能是缺少堆栈跟踪的重要部分。

Applet资源访问

小程序需要从“家庭服务器”加载资源(如果是沙盒),网址。

图标可能是嵌入式资源,位于archive元素的applet属性中引用的Jar内,但如果它们作为图像加载到服务器,则可以相对于文档库或代码库。以下是包含HTML的目录的REC1.jpg子目录中名为image的图像。

URL url = new URL(getDocumentBase(), "image/REC1.jpg");
Image myImage = getToolkit().createImage(url);

答案 1 :(得分:0)

您也可以使用.PNG文件格式。并使用小写字母作为文件名。