在Eclipse上动态地将目录添加到目标平台

时间:2014-11-04 16:20:31

标签: java eclipse pde target-platform

我使用的是Eclipse 3.7(Indigo)并且有一个插件,它将一个已定义的目录添加到活动目标平台。

ITargetPlatformService service = (ITargetPlatformService) PDECore.getDefault().acquireService(ITargetPlatformService.class.getName());
ITargetDefinition target = service.getWorkspaceTargetHandle().getTargetDefinition();
IBundleContainer[] bundles = target.getBundleContainers();
String myDirectory = "C:\\directory";
boolean containsMyDirectory = false;

for (IBundleContainer bundle : bundles) {
    if (bundle.toString().contains(myDirectory.toString())) {
        containsMyDirectory = true;
        break;
    }
}

if (!containsMyDirectory) {
    bundles = Arrays.copyOf(bundles, bundles.length + 1);
    bundles[bundles.length - 1] = service.newDirectoryContainer(myDirectory.toString());
    target.setBundleContainers(bundles);
    service.saveTargetDefinition(target);
    LoadTargetDefinitionJob.load(target);
}

但是现在,我们正在迁移到Eclipse 4.4(Luna)并且代码不再编译,显示以下消息: 无法解析导入org.eclipse.pde.internal.core.target.provisional

无法解决的导入是:

import org.eclipse.pde.internal.core.target.provisional.IBundleContainer;
import org.eclipse.pde.internal.core.target.provisional.ITargetDefinition;
import org.eclipse.pde.internal.core.target.provisional.ITargetPlatformService;
import org.eclipse.pde.internal.core.target.provisional.LoadTargetDefinitionJob;

Eclipse 3.7中使用的jar是org.eclipse.pde.core_3.7.1.v20120103_r372.jar,而Eclipse 4.4中的jar是org.eclipse.pde.core_3.10.0.v20140519-1409.jar

我无法找到替代旧版的类。

有人知道该怎么办吗?

1 个答案:

答案 0 :(得分:0)

这些类是内部,因此您不应该使用它们。

他们现在已全部转移到org.eclipse.pde.target插件中的org.eclipse.pde.core包,因此他们现在已成为官方API的一部分。

但是PDECore仍然是内部的,所以不应该使用。由于ITargetPlatformService是OSGi服务,因此您应该可以使用ServiceReference在插件中获取它。