以ImageDescriptor讲解一下: 在SWT/JFace的java项目中,获取一个图像描述符的常用方法如下: public ImageDescriptor getImageDesc(String fileName) { try { URL url = new URL("file:icons/"+fileName); return ImageDescriptor.createFromURL(url); } catch(MalformedURLException mue) { mue.printStackTrace(); } return null; } 但是这个方法在RCP开发中根本图片根本就不能正常显示,即使创建一个SWT的shell在在上面放一个ToolBar加入Action测试正确,但是 RCP程序中就是不能够正常显示。 原因如下: 原因是这里不识别java项目的主目录。 解决方法: 1,使用createFromFile()这个方法,而不能够使用createFromURL()。如: ImageDescriptor imageDesc = ImageDescriptor.createFromFile(ImageFactory.class, location);但是这个和类ImageFactory.class在同一个目录下的文件夹必须命名为app-icons这样的格式,不然就会看起来 是一个包而不是文件夹。 缺点:icons目录过深! 2,另一种解决方法就是AbstractUIPlugin.imageDescriptorFromPlugin("crmSample", location);这例AbstractUIPlugin.imageDescriptorFromPlugin(plugin的id, 文件的位置)!