0

我使用的是 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 中使用的是 org.eclipse.pde.core_3.10.0.v20140519-1409.jar

我找不到取代旧课程的课程。

有人知道该怎么做吗?

4

1 回答 1

0

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

它们现在已全部移至插件中的org.eclipse.pde.target包中,org.eclipse.pde.core因此它们现在是官方 API 的一部分。

但是PDECore仍然是内部的,因此不应使用。由于ITargetPlatformService它是一项 OSGi 服务,因此您应该能够使用ServiceReference.

于 2014-11-04T16:57:26.963 回答