Eclipse ,如何获取 class 的 URI

Eclipse , How to get the URI of a class

Class 克拉兹 = IWorkbench.class ;

不知道有没有API可以帮我得到class的URI,这个URI是用来打开编辑器的

自己试过URL成功了,不过还是想用eclipseAPI

public static IEditorPart openClassInEditorFromURI(URI uri) {
    IWorkbenchPage page = BitFanUI.getLastActivateWindow().getActivePage() ;
    if( page == null ) {
        return null ;
    }
    try {
        IFileStore fileStore = EFS.getStore( uri ) ;
        return IDE.openEditorOnFileStore(page, fileStore);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null ;
}

通常,(运行时)class 没有 URI。 (您可以从字节数组中动态定义 class ...)

话虽如此,大多数以正常方式加载的 classes 都会有一个资源 URI。如果您知道完全限定的 class 名称和加载它的 classloader,您应该能够执行以下操作:

  1. 将 classes 完全限定名称转换为其资源路径。例如“com.example.MyClass”通常会映射到“/com/example/MyClass.class”.

  2. 使用classloader.getResource(resourcePath)获取URI。

但是请注意,URI 在另一个上下文中可能无法解析。


我认为 Eclipse 没有提供执行上述操作的 API。 (我找不到。)


UPDATE - 如果您尝试以编程方式从其全名中查找 class 的源 URI,那么这可能会提供答案:

  • How to programmatically find a .java file in an Eclipse plugin from full classname?

请注意,如果您在 Eclipse 插件的上下文中确实有一个 Class 对象(正如您的 Class<?> clazz = IWorkbench.class 片段所暗示的那样),那么您可以从中提取完整的 class 名称Class 对象。但这听起来有点奇怪......