別のプラグインによって初期化されたクラスパス コンテナーを変更したいと考えています。具体的には、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 を再起動すると見苦しくなります。
おそらくクラスパスコンテナ全体を削除して置き換えることなく、クラスパスコンテナからクラスパスエントリを削除できるよりシームレスな方法はありますか?