1

クラスを検索するためのオプションを Package Explorer に追加するプラグインを Eclipse で開発しました。そのため、プラグインはクラスを検索し、クラス パスを返します。次に、エクスプローラーでクラスを強調表示する必要があります。

私はこれを使用しました:

IPath iPath = new Path(path);
                        IFile file = project.getFile(iPath);

                        file = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(iPath);

                        ISelection selection = new StructuredSelection(file);

                        IViewReference[] views = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getViewReferences();
                        PlatformUI.getWorkbench().getActiveWorkbenchWindow()
                        .getActivePage().resetPerspective(); 
                        for(IViewReference view:views){
                            if("org.eclipse.jdt.ui.PackageExplorer".equals(view.getId())){
                                IViewPart pExplorer = view.getView(true);
                                pExplorer.getViewSite().getSelectionProvider().setSelection(selection);
                                break;
                            }
                        }

ただし、次の行で NullPointerException が返されます。 IViewReference[] views = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getViewReferences();

ヒントやヘルプをいただければ幸いです。


コメントありがとうございます..今、私の問題は、このコードがエクスプローラーのクラスを強調表示しないことです!!

String path = "D:\\Programs\\eclipse\\runtime-EclipseApplication\\tessssst\\src\\testClass.java";

    IPath iPath = new Path(path);
    IFile file = project.getFile(iPath);

    file = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(iPath);

    ISelection selection = new StructuredSelection(file);

    IViewReference[] views = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getViewReferences();
    PlatformUI.getWorkbench().getActiveWorkbenchWindow()
    .getActivePage().resetPerspective(); 
    for(IViewReference view:views){
        if("org.eclipse.jdt.ui.PackageExplorer".equals(view.getId())){
            IViewPart pExplorer = view.getView(true);
            pExplorer.getViewSite().getSelectionProvider().setSelection(selection);
            break;
        }
    }

コードを修正するように案内してください!入力として上記のようなパスが必要です。

4

1 に答える 1

2

考慮事項:

  • あなたが言及していること PlatformUI.getWorkbench() はnullです
  • 次のコードがorg.eclipse.ui.PlatformUI含まれます。

:

public static IWorkbench getWorkbench() {
    if (Workbench.getInstance() == null) {
        // app forgot to call createAndRunWorkbench beforehand
        throw new IllegalStateException(WorkbenchMessages.PlatformUI_NoWorkbench);
    }
    return Workbench.getInstance();
}

createAndRunWorkbench()プラグインの呼び出し時に呼び出されなかった可能性があります (このチュートリアルのように呼び出されます)。

于 2013-02-03T20:59:35.520 に答える