我正在构建一个基于Eclipse RCP的产品,我遇到了一个问题,当我尝试使用内置的p2 UI来安装产品的更新时,我在对话框中收到一条错误消息&# 34;访问权限不足以应用此更新。"
我已经调试到Eclipse中,发现了'根本原因'是有一个p2 .profile文件,其xml包含此代码段:
<iuProperties id='com.datical.db.ui.product' version='1.33.0.201412032223'>
<properties size='4'>
<property name='org.eclipse.equinox.p2.internal.inclusion.rules' value='STRICT'/>
<property name='org.eclipse.equinox.p2.type.root' value='true'/>
<property name='org.eclipse.equinox.p2.type.lock' value='3'/>
<property name='org.eclipse.equinox.p2.base' value='true'/>
</properties>
</iuProperties>
相关行是<property name='org.eclipse.equinox.p2.type.lock' value='3'/>
我不确定我做错了什么 - 我认为我的产品定义或功能定义或我的安装过程中必须有一些错误导致此行存在。
当我逐步浏览Eclipse代码(我们的目标环境是3.7 / Indigo)时,我看到配置文件正在org.eclipse.equinox.internal.p2.engine:SurrogateProfileHandler:addSharedProfileBaseIUs
内写入(这是私有静态。)从SurrogateProfileHandler:createProfile
<调用/ p>
该产品的p2存储库正在使用tycho插件构建,版本为0.15。
答案 0 :(得分:1)
我们终于发现了另一条可能相关的信息。我们使用的是自定义OSGI目录名。当我们删除它时,一切都按预期开始工作。
答案 1 :(得分:0)
您似乎有一个共享安装,其中您希望更新的产品(可能)被许多安装用作基础 - 因此无法更新。
答案 2 :(得分:0)
这种问题超出了stackoverflow可以很好解决的问题,因为你真的需要提供一个示例项目和重现问题的确切步骤。
您看到的症状最可能的原因是某种文件系统权限问题。 This documentation提到您需要对安装目录具有写权限才能使用-initialize
运行Eclipse。也许您缺少某些权限,导致某些-initialize
过程失败并使安装处于不一致状态。