Eclipse 在RCP应用程序中添加包资源管理器会导致某些图标丢失

Eclipse 在RCP应用程序中添加包资源管理器会导致某些图标丢失,eclipse,icons,eclipse-rcp,package-explorer,Eclipse,Icons,Eclipse Rcp,Package Explorer,在我的eclispe rcp应用程序中,我添加了一个包资源管理器,添加org.eclipse.jdt.ui 当我使用我的rcp应用程序时,当我通过“新建项目向导”创建一个新项目以添加一个“常规项目”时,该项目已正确创建,但未加载package explorer视图中的相应图标 我必须向我的应用程序添加什么插件才能正确显示所有(平台)图标 非常感谢您可能应该使用Project Explorer而不是Package Explorer。包资源管理器是特定于Java的,项目资源管理器可以执行Java和

在我的eclispe rcp应用程序中,我添加了一个包资源管理器,添加org.eclipse.jdt.ui

当我使用我的rcp应用程序时,当我通过“新建项目向导”创建一个新项目以添加一个“常规项目”时,该项目已正确创建,但未加载package explorer视图中的相应图标

我必须向我的应用程序添加什么插件才能正确显示所有(平台)图标


非常感谢

您可能应该使用Project Explorer而不是Package Explorer。包资源管理器是特定于Java的,项目资源管理器可以执行Java和其他任何操作


这里有一些详细信息:

您必须在WorkbenchVisor#initialize(IWorkbenchConfiger)方法中手动注册一些适配器

调用此方法(您将在bundle
org.eclipse.ui.IDE.application

org.eclipse.ui.ide.IDE.registerAdapters();

这是Eclipse RCP应用程序中的一个已知问题

解决方法是向ApplicationWorkbenchHadVisor.java添加一些代码

以下是RCP中有关此问题的更多文档

在这个代码示例中,我添加了ProjectExplorer和Problems视图的图像

下面是我必须添加到初始化方法中的内容

  public void initialize(IWorkbenchConfigurer configurer) {
     super.initialize(configurer);

     // here's some of my code that does some typical RCP  configuration
     configurer.setSaveAndRestore(true);
     PlatformUI.getPreferenceStore().setValue(
            IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS, false);

    // here is the work around code
    /*
     * This is a hack to get Project tree icons to show up in the Project Explorer.
     * It is descriped in the Eclipse Help Documents here.
     * 
     * http://help.eclipse.org/ganymede/topic/org.eclipse.platform.doc.isv/guide/cnf_rcp.htm
     * 
     */

    IDE.registerAdapters();

    final String ICONS_PATH = "icons/full/";

    Bundle ideBundle = Platform.getBundle(IDEWorkbenchPlugin.IDE_WORKBENCH);

    declareWorkbenchImage(
            configurer, 
            ideBundle,
            IDE.SharedImages.IMG_OBJ_PROJECT, 
            ICONS_PATH + "obj16/prj_obj.gif",
            true);

    declareWorkbenchImage(
            configurer, 
            ideBundle,
            IDE.SharedImages.IMG_OBJ_PROJECT_CLOSED, 
            ICONS_PATH + "obj16/cprj_obj.gif", 
            true);

    declareWorkbenchImage(
            configurer, 
            ideBundle, 
            IDEInternalWorkbenchImages.IMG_ETOOL_PROBLEMS_VIEW, 
            ICONS_PATH + "eview16/problems_view.gif", 
            true);

    declareWorkbenchImage(
            configurer, 
            ideBundle, 
            IDEInternalWorkbenchImages.IMG_ETOOL_PROBLEMS_VIEW_ERROR, 
            ICONS_PATH + "eview16/problems_view_error.gif", 
            true);


    declareWorkbenchImage(
            configurer, 
            ideBundle, 
            IDEInternalWorkbenchImages.IMG_ETOOL_PROBLEMS_VIEW_WARNING, 
            ICONS_PATH + "eview16/problems_view_warning.gif", 
            true);

    declareWorkbenchImage(
            configurer, 
            ideBundle, 
            IDEInternalWorkbenchImages.IMG_OBJS_ERROR_PATH, 
            ICONS_PATH + "obj16/error_tsk.gif", 
            true);

    declareWorkbenchImage(
            configurer, 
            ideBundle, 
            IDEInternalWorkbenchImages.IMG_OBJS_WARNING_PATH, 
            ICONS_PATH + "obj16/warn_tsk.gif", 
            true);

    /*
     * End of hack in this method... 
     */
}

private void declareWorkbenchImage(IWorkbenchConfigurer configurer_p, Bundle ideBundle, String symbolicName, String path, boolean shared)  
{
    URL url = ideBundle.getEntry(path);
    ImageDescriptor desc = ImageDescriptor.createFromURL(url);
    configurer_p.declareImage(symbolicName, desc, shared);
}
希望这有帮助


谢谢!

在较新的eclipse版本中,有一个重要的更改可以使其正常工作。包含的图像不再是gif,而是png。因此,在所有地方,例如“obj16/prj_obj.gif”更改为“obj16/prj_obj.png”和所有其他图像,它都会正常工作