Java Eclipse插件,ClassCastException

Java Eclipse插件,ClassCastException,java,eclipse-plugin,Java,Eclipse Plugin,我正在尝试获取当前选定项目的路径。我正在使用下面的代码: IWorkbench workbench = PlatformUI.getWorkbench(); IWorkbenchWindow window = workbench == null ? null : workbench.getActiveWorkbenchWindow(); IWorkbenchPage activePage = window == null ? null : window.getActive

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

    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

假设您试图访问的是一个工作台项目,您应该将其转换到接口
org.eclipse.core.resources.IProject

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


确保您的插件依赖项中有
org.eclipse.core.resources
插件。

假设您试图访问的是一个工作台项目,您应该转换到接口
org.eclipse.core.resources.IProject

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


确保您的插件依赖项中有
org.eclipse.core.resources
插件。

啊,处理类加载器的乐趣!这当然是一个classloder问题,因为两个类都有相同的名称。但这帮不了你。啊,和类加载器打交道的乐趣!这当然是一个classloder问题,因为两个类都有相同的名称。但是我帮不了你。谢谢你的回答。问题是我已经尝试使用IProject了,但是猜猜看:instanceof操作符失败了。。。我已经尝试切换到默认的类加载器。不过运气不好。“切换到默认类加载器”是什么意思?Eclipse应该管理类加载器,而您不应该对它们做任何事情。你是以Eclipse插件的形式运行这个插件的吗?是的,我是。我读了这篇文章:关于eclipse类加载器,但这并不能解决问题。您应该将资源插件放在插件依赖项中,而不使用类加载器。如果这还不够,我们需要看看代码。谢谢你的回答。问题是我已经尝试使用IProject了,但是猜猜看:instanceof操作符失败了。。。我已经尝试切换到默认的类加载器。不过运气不好。“切换到默认类加载器”是什么意思?Eclipse应该管理类加载器,而您不应该对它们做任何事情。你是以Eclipse插件的形式运行这个插件的吗?是的,我是。我读了这篇文章:关于eclipse类加载器,但这并不能解决问题。您应该将资源插件放在插件依赖项中,而不使用类加载器。如果这还不够,我们需要查看代码。