当我按“ CTRL + SHIFT + O ”(组织进口)时,我需要知道在eclipse中调用哪种方法在代码生成后调用它。这个方法的名称和我在哪里可以找到它(Package.Interface)
由于
答案 0 :(得分:3)
“组织导入”操作由org.eclipse.jdt.ui.actions.OrganizeImportsAction
提供,后者又调用org.eclipse.jdt.internal.corext.codemanipulation.OrganizeImportsOperation
。
答案 1 :(得分:1)
最终使用此代码进行管理(targetSite是一个在shell时初始化的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);
}
答案 2 :(得分:0)
作为参考,我就是这样做的:
我在项目的代码库中创建了一个大型自动重构器。由于eclipse中的(我认为如此)错误,重构静态方法被静态导入到另一个文件中,我不得不在每个重构后调用组织导入(也因为我自动将所有动作都提交给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);
}
缺点:不鼓励访问。如果有人想要在没有创建新的runnable且没有使用shell等的情况下正确调用此操作,请发表评论。