我使用的是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
我无法找到替代旧版的类。
有人知道该怎么办吗?
答案 0 :(得分:0)
这些类是内部,因此您不应该使用它们。
他们现在已全部转移到org.eclipse.pde.target
插件中的org.eclipse.pde.core
包,因此他们现在已成为官方API的一部分。
但是PDECore
仍然是内部的,所以不应该使用。由于ITargetPlatformService
是OSGi服务,因此您应该可以使用ServiceReference
在插件中获取它。