Eclipse rcp 为什么我的eclipse RCP产品被锁定并且可以';不能更新吗?

Eclipse rcp 为什么我的eclipse RCP产品被锁定并且可以';不能更新吗?,eclipse-rcp,tycho,p2,Eclipse Rcp,Tycho,P2,我正在构建一个基于Eclipse RCP的产品,并且遇到了一个问题,当我尝试使用内置的p2 UI安装产品更新时,我在对话框中收到一条错误消息“没有足够的访问权限来应用此更新” 我已经调试到Eclipse中,发现“根本原因”是有一个p2.profile文件包含包含以下代码段的xml: <iuProperties id='com.datical.db.ui.product' version='1.33.0.201412032223'> <properties size='4'&

我正在构建一个基于Eclipse RCP的产品,并且遇到了一个问题,当我尝试使用内置的p2 UI安装产品更新时,我在对话框中收到一条错误消息“没有足够的访问权限来应用此更新”

我已经调试到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>

相关的行是说

我不确定我做错了什么-我想我的产品定义、功能定义或安装过程中一定有什么地方出错,导致这一行出现

当我逐步浏览Eclipse代码(我们的目标环境是3.7/Indigo)时,我看到概要文件是在
org.Eclipse.equinox.internal.p2.engine:prograteprofilehandler:addSharedProfileBaseIUs
(这是私有静态)中编写的,从
prograteprofilehandler:createProfile


该产品的p2存储库是使用tycho插件0.15版构建的。

似乎您有一个共享安装,您想要更新的产品(可能)被许多安装用作基础,因此无法更新

这类问题超出了stackoverflow可以很好地解决的范围,因为您确实需要提供一个示例项目和重现问题的确切步骤


您看到的症状最可能的原因是某种文件系统权限问题。提到您需要对安装目录的写入权限才能使用
-initialize
运行Eclipse。可能是您缺少某些权限,导致某些
-initialize
过程失败,并使安装处于不一致的状态。

我们最终发现了另一条可能相关的信息。我们使用的是自定义OSGI目录名。当我们移除它时,一切都开始按预期工作

由于p2是一个非常专业的主题,因此可能值得在p2论坛的上询问此问题。该标志的建议有效值为0(LOCK\u NONE)、1(LOCK\u UNINSTALL)或2(LOCK\u UPDATE)。没有提到3意味着什么。您是否尝试过使用较新版本的tycho?这些标志是或组合在一起的,因此3表示它在更新和卸载时都被锁定。我还没有尝试过换一个新版本的第谷(tycho),主要是出于FUD。greg-449,谢谢论坛的参考-我会尝试在那里交叉发布。我从来没有听说过这个问题,所以这可能是一个尚未报告的错误。如果是这种情况,您无论如何都需要更新到较新的p2版本,并且由于p2嵌入在Tycho中,因此您需要更新您的Tycho版本。今天我更新到Tycho版本0.21.0(最新版本),我看到了几乎相同的行为。当我第一次运行产品时,锁仍在设置中。我通过在安装时操纵XML来解决这个问题。这使我可以在应用程序中运行“检查更新”,现在我可以实际选择更新版本并应用它-这一功能最初看起来很有效。然而,当我深入研究时,我发现功能标签上的“关于”对话框中显示了该功能的新旧版本,以及所有带有“旧”版本的插件。什么会导致某些东西被标记为共享安装?我使用的安装过程只是将tycho的“materialize product”和“archive product”插件创建的特定于平台的zip文件解压缩到我的主目录(在我的例子中,在Ubuntu-/home/steve/product)中的一个目录中。然后,我用“-initialize”运行可执行文件,这是我看到用锁创建.profile.gz文件的时候。我尝试用较新的eclipse产品-initialize,但它没有添加锁。所以,我想你最好的选择是使用更新的tycho版本(因此有更新的p2版本),正如@oberlies所指出的。顺便说一句:如果不是只读安装,为什么要使用-initialize?我使用-initialize,因为这是本页上说我应该做的。我要做的可能就是举出一个例子。不幸的是,现在我已经花了大约两周的时间在这件事上,不能证明现在花更多的时间在这件事上是合理的。我对所有有问题的目录都有写权限。如果你看一下这个页面:它详细介绍了eclipse配置选项,其中提到了“-configuration(Main),相当于将osgi.configuration.area设置为”