プロジェクトエクスプローラ内の開いているすべてのプロジェクトを処理するeclipseプラグインを作成しています。選択したプロジェクトの内部にファイルが作成されます。eclipseプラグインで現在のプロジェクトを取得する普遍的な方法
私は現在のプロジェクトを入手するために蛇腹論理を使用しています。
public IProject getCurrentProject() {
IProject project = null;
IWorkbenchWindow window = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow();
if (window != null) {
ISelection iselection = window.getSelectionService().getSelection();
IStructuredSelection selection = (IStructuredSelection) iselection;
if (selection == null) {
return null;
}
Object firstElement = selection.getFirstElement();
if (firstElement instanceof IResource) {
project = ((IResource) firstElement).getProject();
} else if (firstElement instanceof PackageFragmentRoot) {
IJavaProject jProject = ((PackageFragmentRoot) firstElement)
.getJavaProject();
project = jProject.getProject();
} else if (firstElement instanceof IJavaElement) {
IJavaProject jProject = ((IJavaElement) firstElement)
.getJavaProject();
project = jProject.getProject();
}
}
return project;
}
これは開発者モードで動作しています。しかし、プラグインとしてエクスポートしてインストールした後、次のエラーが発生しました。
org.eclipse.e4.core.di.InjectionException: java.lang.ClassCastException: org.eclipse.jface.text.TextSelection cannot be cast to org.eclipse.jface.viewers.IStructuredSelection
ことが注目されているので、選択は、エディタに切り替えているように見えます。 現在のプロジェクトを取得する普遍的な方法はありますか?
完璧に機能しました! @パーティー、いつも私を救う! –