2011-07-12 9 views
0

Eclipse JDT Core APIを使用してJavaソースファイルのインポートを再定義する方法はありますか?Eclipse JDT Coreを使用してインポートを再定義する方法

私には以下のものがあります(これはうまくいかず)。

try { 
    for (IPackageFragmentRoot root : project.getPackageFragmentRoots()) { 
     if (root.getElementName().equals("src")) { 
      for (ICompilationUnit unit : root.getPackageFragment("soap.service.implementation.strongProfile.delegate").getCompilationUnits()) { 
       System.out.println(unit.getElementName()); 
       for (IImportDeclaration dec : unit.getImports()) { 
        dec.rename("soap.service.implementation.strongProfile.reader.HeadlineReader", true, null); 
       } 
      } 
     } 
    } 
}catch(Exception e) { 
    e.printStackTrace(); 
} 

私が得る例外は次のとおりです。

Java Model Exception: Java Model Status [Invalid name specified: soap.service.implementation.strongProfile.reader.HeadlineReader] 

私はインポート名を取り、私のJavaソースファイルにそれを貼り付け、それは完璧だ、それは私にエラーを与えるものではありません。どんな助けや指導も頂ければ幸いです。

答えて

0

私は同じ例外(Eclipse 3.7.2を使用していても)を抱えていました。これは、バグレポートのようになります。https://bugs.eclipse.org/bugs/show_bug.cgi?id=351940ここ

が(代わりにリネーム)機能するソリューションです。また

dec.delete(false, null); 
unit.createImport(redefinedImport, null, dec.getFlags(), null); 

unit.createImport(redefinedImport, dec, dec.getFlags(), null); 
dec.delete(false, null); 

を元の位置に近づくためにしかし、このアプローチではありませんインポート宣言の元の位置を維持しないでください。私のコードにはコメントと注釈が含まれているので、インポート宣言は元の位置で変更する必要があります。

ImportRewriteでASTを直接操作すると、removeImportとaddImportも許可されます。

インポート宣言をプログラムで再定義/名前を変更するソリューションはありますか?

関連する問題