0

我有使用 Eclipse 3.6 编写的带有 p2 存储库的无头更新的 RCP 应用程序。在决定迁移到 Eclipse 3.7 之后,结果发现我的工作区不起作用,因为 3.7 中不再存在某些类。3.6 中的问题是什么?

Eclipse 3.6 中的问题:应用程序在核心插件启动之前检查更新。它尝试连接到 p2 存储库。如果有连接,它会搜索更新,如果有,则更新,如果没有,它什么也不说更新并继续。如果没有连接,则在 Equinox/Eclipse 框架深处存在异常,该异常已由框架处理,并且从未出现在我们面前,因此应用程序无法说出是否有连接,结果它说有没有什么可更新的。

解决方案:在为此加快解决方案几天后,我找到了一个解决方法。解决方案是创建一个类来验证存储库的“状态”,例如我是否连接到它。这是我的课:

public class RepositoryValidator {

private final static String urlExtension = "artifacts.jar"; //$NON-NLS-1$

private static RepositoryValidator instance;

private RepositoryValidator() {

}

public static RepositoryValidator sharedInstance() {
if (instance == null) {
instance = new RepositoryValidator();
}
return instance;
}

public IStatus checkRepositoryStatus(URI repoURI) {
try {
URI checkURI = new URI(repoURI.toString() + urlExtension);
ILog logger = Activator.getDefault().getLog();
logger.log(new Status(IStatus.INFO, Activator.PLUGIN_ID,
"CHECK REPOSITORY \"artifacts.jar\" - " //$NON-NLS-1$
+ checkURI.toString()));
long result = RepositoryTransport.getInstance().getLastModified(
checkURI, new NullProgressMonitor());
if (result == 0) {
logger.log(new Status(IStatus.INFO, Activator.PLUGIN_ID,
"RESULT FROM CHECK - " + result)); //$NON-NLS-1$
return new Status(IStatus.ERROR, Activator.PLUGIN_ID,
"WRONG SERVER RESPONCE!!!"); //$NON-NLS-1$
}
} catch (Exception e) {
return new Status(IStatus.ERROR, Activator.PLUGIN_ID,
"CONNECTION EXCEPTION", e); //$NON-NLS-1$
}
return new Status(IStatus.OK, Activator.PLUGIN_ID,
"REPOSITORY IS REACHABLE AND OK!!!"); //$NON-NLS-1$


}
}

我基本上在这里做的是检查artifacts.jar何时被修改,如果我可以访问它我有连接,如果不是我没有。

Eclipse 3.7 中的问题:在 Eclipse 3.6 的解决方案中,我使用了 RepositoryTransport 类,该类在 3.7 中不再可用。我试图找出这个类是否已被其他类取代,或者在可用类中是否有一种方法可以达到类似的功能。我找不到与主题相关的任何内容,也找不到与课程相关的内容,也找不到 3.6 中问题的解决方案。

Deos有人知道与此问题有关的任何事情吗?3.6 本身是否有解决方案,或者他们决定用任何类似的功能替换这个类?或者,如果有人对此问题有其他解决方法的想法?

预先感谢。

4

1 回答 1

0

首先,RepositoryTransport在 3.7 中代码重构后被移动到新引入的包中的org.eclipse.equinox.internal.p2.transport.ecf包中。

其次,我认为您的解决方法不是检查它是否有更新的好方法。您应该使用 p2 API加载您的存储库,然后查询它是否包含您的安装更新。

于 2011-08-03T05:01:28.513 回答