2016-12-09 12 views
1

JavaプロジェクトでJavaファイルを完全に処理するEclipseプラグインをハッキングしています。私はそれをあらゆる種類のプロジェクトでJavaファイルのために働かせたいと思っています。EclipseプラグインのスタンドアロンJavaファイルからICompilationUnit/ITypeRootを取得

このプラグインは、各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 –

関連する問題