3

コード生成後に呼び出すには、 「 CTRL+ SHIFT+ 」(Organise Imports)を押したときにEclipse内でどのメソッドが呼び出されるかを知る必要があります。Oこのメソッドの名前と場所(Package.Interface)

ありがとう

4

3 に答える 3

3

「インポートの整理」アクションは、によって提供されます。これによりorg.eclipse.jdt.ui.actions.OrganizeImportsAction、が呼び出されますorg.eclipse.jdt.internal.corext.codemanipulation.OrganizeImportsOperation

于 2012-04-04T11:28:03.450 に答える
1

最終的にこのコードでそれを行うことができました(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);
}
于 2012-04-06T13:39:10.953 に答える
0

参考までに、これは私がそれをした方法です:

プロジェクトのコードベースで大規模な自動リファクタリングを作成しました。別のファイルに静的にインポートされる静的メソッドのリファクタリングを伴う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);
}

不利な点:アクセスをお勧めしません。新しいランナブルを作成したり、シェルなどを使用したりせずに、このアクションを適切に呼び出すことを誰かが考えている場合は、コメントしてください。

于 2014-11-13T13:58:13.760 に答える