1

別のプラグインによって初期化されたクラスパス コンテナーを変更したいと考えています。具体的には、Eclipse Android Development Tools プラグイン (ADT) によって初期化された「Android Dependencies」クラスパス コンテナー内の特定のクラスパス エントリをフィルター処理/削除したいと考えています。

現在、新しいクラスパス コンテナを作成し、元の Android クラスパス コンテナから興味のあるエントリをコピーしてから、元のエントリを削除することで、内容を「変更」しています。

    final IPath path = new Path(AdtConstants.CONTAINER_LIBRARIES);
    IClasspathContainer container = findClasspathContainer(classpath, path, project);
    MavenLibrariesClasspathContainer newContainer = new MavenLibrariesClasspathContainer("Android Dependencies", path);

     for(IClasspathEntry entry : container.getClasspathEntries()) {
        if(!entry.getPath().toOSString().contains(File.separator + "libs" + File.separator)) {
            newContainer.addClasspathEntry(entry);
        }
    }

    classpath.removeEntry(path);

    JavaCore.setClasspathContainer(
                new Path("me.gladwell.eclipse.m2e.android.LIBRARIES"),
                new IJavaProject[] { project },
                new IClasspathContainer[] { newContainer },
                new NullProgressMonitor()
    );

ただし、これにはバグがあり、Eclipse ワークスペースが (一時的に) 壊れてしまい、Eclipse を再起動すると見苦しくなります。

おそらくクラスパスコンテナ全体を削除して置き換えることなく、クラスパスコンテナからクラスパスエントリを削除できるよりシームレスな方法はありますか?

4

0 に答える 0