组织Imports Eclipse方法

时间:2012-04-04 09:32:58

标签: java eclipse code-generation

当我按“ CTRL + SHIFT + O ”(组织进口)时,我需要知道在eclipse中调用哪种方法在代码生成后调用它。这个方法的名称和我在哪里可以找到它(Package.Interface)

由于

3 个答案:

答案 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等的情况下正确调用此操作,请发表评论。