Eclipse插件,ClassCastException

时间:2013-10-27 20:28:20

标签: java eclipse-plugin

我正在尝试获取当前所选项目的路径。我正在使用以下代码:

    IWorkbench workbench = PlatformUI.getWorkbench();
    IWorkbenchWindow window = workbench == null ? null : workbench.getActiveWorkbenchWindow();
    IWorkbenchPage activePage = window == null ? null : window.getActivePage();

    ISelection selection = activePage.getSelection();
    if (selection instanceof TreeSelection) {
        List list = ((TreeSelection) selection).toList();

        for (Object selectedObject : list) {
            String path = ((Project) selectedObject).getFullPath().makeAbsolute().toString();
            System.out.println(path);
        }
    }

然而,当我运行那些东西时,我得到以下异常:

java.lang.ClassCastException: org.eclipse.core.internal.resources.Project cannot be cast to org.eclipse.core.internal.resources.Project
at junitcategories.handlers.SampleHandler.execute(SampleHandler.java:48)
at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:290)
at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

这是一个类加载问题吗?我该如何解决这个问题? - 抱歉,我是插件开发的新手。

谢谢, 的Tamas

1 个答案:

答案 0 :(得分:1)

假设您尝试访问的是Workbench项目,您应该转换为接口org.eclipse.core.resources.IProject

您不应在包名称中使用internal的任何内容。这些不是Eclipse API的一部分,如有更改,恕不另行通知。

确保插件依赖项中包含org.eclipse.core.resources插件。