Eclipse rcp Ecplise P2:验证存储库位置

Eclipse rcp Ecplise P2:验证存储库位置,eclipse-rcp,p2,Eclipse Rcp,P2,我正在开发一个RCP应用程序,并向用户提供更新功能 我正在将字符串URL转换为java.net.URI,并使用以下代码验证它们: 将字符串URL转换为URI 验证URI 加载存储库以确保存在有效的artifacts.xml或artifacts.jar,并且存储库可用于更新 私有字符串[]存储库={, }; @凌驾 公共对象executeExecutionEvent事件引发ExecutionException{ 列表URI=新的ArrayList; URI=null; 对于字符串str:this.

我正在开发一个RCP应用程序,并向用户提供更新功能

我正在将字符串URL转换为java.net.URI,并使用以下代码验证它们:

将字符串URL转换为URI 验证URI 加载存储库以确保存在有效的artifacts.xml或artifacts.jar,并且存储库可用于更新

私有字符串[]存储库={, };

@凌驾 公共对象executeExecutionEvent事件引发ExecutionException{ 列表URI=新的ArrayList; URI=null; 对于字符串str:this.repositories{ 试一试{ uri=新的URIstr; 如果uri!=null{ uris.adduri; } }捕获URISyntaxException e{ e、 打印跟踪; } }

最终配置GUI ui=ProvUIActivator.getDefault .getProvisioningUI; 对于uriu:URI{ IStatus status=ui.getRepositoryTracker .validateRepositoryLocationui.getSession,uri,true, 无效

if (!status.isOK()) {
MessageDialog.open(MessageDialog.ERROR, Display.getDefault()
        .getActiveShell(), "P2 Repo Status", status
        .getMessage(), 0);
}
}

对于urirepo:URI{ 试一试{ IArtifactRepository repository=ProvUI .getArtifactRepositoryManagerui.getSession .loadRepositoryrepo,null

if (!status.isOK()) {
MessageDialog.open(MessageDialog.ERROR, Display.getDefault()
        .getActiveShell(), "P2 Repo Status", status
        .getMessage(), 0);
}
if (repository != null) {
        System.out.println(repository.getName());
}
} catch (ProvisionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}捕获异常{ 例如,打印跟踪; } } 返回null; }


这里的第三点,加载存储库,是否有更好的方法来验证存储库是否有效以及是否可以用于更新。当前方法的问题是,如果存储库无效,则需要花费大量时间来确定。应用程序被卡住了。请指导我。

请原谅我的代码格式设置,这不会给我带来什么困难。不知道为什么它不起作用: