コード生成後に呼び出すには、 「 CTRL+ SHIFT+ 」(Organise Imports)を押したときにEclipse内でどのメソッドが呼び出されるかを知る必要があります。Oこのメソッドの名前と場所(Package.Interface)
ありがとう
コード生成後に呼び出すには、 「 CTRL+ SHIFT+ 」(Organise Imports)を押したときにEclipse内でどのメソッドが呼び出されるかを知る必要があります。Oこのメソッドの名前と場所(Package.Interface)
ありがとう
「インポートの整理」アクションは、によって提供されます。これによりorg.eclipse.jdt.ui.actions.OrganizeImportsAction
、が呼び出されますorg.eclipse.jdt.internal.corext.codemanipulation.OrganizeImportsOperation
。
最終的にこのコードでそれを行うことができました(targetSiteはame時にシェルとして初期化されたIWorkbenchサイトです):
@Override
public void postLaunchAction(final IProject project, final IProgressMonitor monitor) throws CoreException {
super.postLaunchAction(project, monitor);
Runnable job = new Runnable() {
@Override
public void run() {
OrganizeImportsAction org = new OrganizeImportsAction(SpringServicesAction.this.targetSite);
try {
IJavaProject prj = null;
if (project.hasNature("org.eclipse.jdt.core.javanature")) {
prj = JavaCore.create(project);
}
IStructuredSelection selection = new StructuredSelection(prj);
org.run(selection);
} catch (CoreException ce) {
ce.printStackTrace();
}
}
};
this.shell.getDisplay().syncExec(job);
}
参考までに、これは私がそれをした方法です:
プロジェクトのコードベースで大規模な自動リファクタリングを作成しました。別のファイルに静的にインポートされる静的メソッドのリファクタリングを伴うEclipseの(私はそう思う)バグのため、各リファクタリングの後にorganize importsを呼び出す必要がありました(また、すべての移動をgitに自動的にコミットするため):
private void organizeImports(ICompilationUnit cu)
throws OperationCanceledException, CoreException {
cu.becomeWorkingCopy(null);
CompilationUnit unit = cu.reconcile(AST.JLS4, false, null, pm);
NullProgressMonitor pm = new NullProgressMonitor();
OrganizeImportsOperation op = new OrganizeImportsOperation(cu, unit,
true, true, true, null);
TextEdit edit = op.createTextEdit(pm);
if (edit == null) {
return;
}
JavaModelUtil.applyEdit(cu, edit, true, pm);
cu.commitWorkingCopy(true, pm);
cu.save(pm, true);
}
不利な点:アクセスをお勧めしません。新しいランナブルを作成したり、シェルなどを使用したりせずに、このアクションを適切に呼び出すことを誰かが考えている場合は、コメントしてください。