2013-09-24 2 views
0

У меня этот код в плагине eclipse. Мне нужно получить путь к любому файлу. Для экземпляров работ, связанных с IFile, но для ICompilationUnit я понятия не имею.Как получить путь к файлу java, выбранному в проводнике pacake в eclipse

final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); 
    final IStructuredSelection selection = (IStructuredSelection) window.getSelectionService().getSelection("org.eclipse.jdt.ui.PackageExplorer"); 

    final Object firstElement = selection.getFirstElement(); 
    String selectedFile = ""; 

    if (firstElement instanceof IFile) 
    { 
     IPath loc = ((IFile) firstElement).getLocation(); 
     if (loc != null) 
     { 
      selectedFile = loc.toOSString(); 
      if(!selectedFile.endsWith(".java")){ 
       selectedFile = ""; 
      } 
     } 
    } else { 
     if(firstElement instanceof ICompilationUnit){ 

      CompilationUnit comUnit = (CompilationUnit)firstElement; 

     } 
    } 

ответ

0

Использование:

IResource resource = (IResource)Platform.getAdapterManager().getAdapter(firstElement, IResource.class); 

if (resource != null) { 
    IPath path = resource.getLocation(); 

    ... 
} 
+0

И когда ресурс не является экземпляром IFile, например CompilationUnit? – Clonw

+0

На самом деле, поскольку вам просто нужен путь, вы можете просто использовать 'IResource.getLocation'. Надеемся, что менеджер адаптера сможет найти «IResource», соответствующий модулю компиляции. –

+0

Да, менеджер адаптера должен иметь возможность конвертировать из CompilationUnit в IResource –

0

Попробуйте проверить, если firstElement является CompilationUnit, не ICompilationUnit, так как это только одна реализация ICompilationUnit. Чем вы можете позвонить getCorrespondingResource().

+0

Сейчас нет доступа к странице справки затмения. У меня нет метода getCorrecpondingResource() в классе CompilationUnit. Какой импорт я получил? – Clonw

0

Вы можете использовать:

String path = iCompilationUnit.getResource().getFullPath(); 

Это даст вам полный путь к выбранному ICompilationUnit.

Смежные вопросы