2016-12-09 51 views
1

我黑客是可以正常使用在Java項目的Java文件的Eclipse插件獨立的Java文件。我想讓它適用於任何類型的項目中的Java文件。獲取ICompilationUnit/ITypeRoot從Eclipse插件

該插件處理每個Java文件作爲ICompilationUnit。 然而,在我的方法,我只能得到IFile一個實例。

如何從此IFile對象創建ICompilationUnit對象?

作爲替代一個ITypeRoot也可能會奏效。我已經看到了這個被直接從編輯器使用創建以下:

IJavaElement input= JavaUI.getEditorInputJavaElement(editorInput); 
     if (input instanceof ITypeRoot) { 
      return (ITypeRoot) input; 
     } 

這種方法適用即使是和非Java項目(從通用項目的java文件/文件在編輯器中打開目錄),這使我相信,可以直接爲文件實現類似的功能。

回答

4

JavaCore.create(IFile)將返回ICompilationUnit如果是適當的文件:可能會返回

IFile file = ... 

IJavaElement element = JavaCore.create(file); 

if (element instanceof ICompilationUnit) { 
    ICompilationUnit compUnit = (ICompilationUnit)element; 

    ... 
} 

其他目的,例如用於IClassFile .class文件。

+0

因此,使用這種方法顯然,當我做'''compUnit.getSource()'''我得到了'''JavaModelException'''。是否有意義?我該如何解決它? –

+0

@LuisCruz對不起,但我對JDT不夠了解。提出一個新問題,以便其他人可以嘗試回答。 –

+0

完成 - http://stackoverflow.com/questions/41100699/how-can-i-mimic-fully-compatible-icompilationunit-from-standalone-java-files –