问题标签 [p2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1214 浏览

eclipse - P2 无头更新不起作用

我采用了 org.eclipse.equinox.p2.examples.rcp.prestartupdate 项目并对其进行了调整,以便在我的 RCP 应用程序中使用。然后,我设置了一个更新存储库,作为我的夜间构建的一部分进行更新。

当我打开我的应用程序时,它会像更新一样进行动作 - 它找到更新站点,为每个包正确生成卸载和安装操作数,并说它完成时没有错误。问题是插件实际上从未安装在插件文件夹中,即使配置文件已更新(后续运行状态没有更新)。下次我的构建运行时,它会正确识别有更新,但同样的事情再次发生。

我花了几天时间进行调试,唯一看起来不寻常的事情(不是我完全理解发生了什么)是在最后的配置阶段,没有一个 TouchpointData 对象有任何指令,所以它看起来不像 configure 是做它应该做的。

我真的不知道下一步该往哪里看,想看看其他人是否有任何想法。

更新:

我终于弄清楚发生了什么。

当我在没有生成元数据存储库的情况下构建我的产品时,问题就开始了。通过 Eclipse 构建时,我没有在导出产品向导中检查“生成元数据存储库”,因为我不需要 p2 存储库,只需要产品。问题是,如果不检查该按钮,产品不会安装为启用 P2,从而导致副作用,例如不生成配置文件等。

我试图通过在代码中手动创建配置文件来弥补这一点,我后来发现这是一个非常糟糕的主意。我最初的问题是因为我的个人资料设置不正确而产生的。

一旦我开始使用“生成元数据存储库”导出产品,检查更新开始正确安装新插件。

我现在遇到的问题是,尽管插件安装正确,但可执行文件已被丢弃,我无法再启动我的应用程序。我正在通过 Hudson 构建我的更新站点,并且在我使用 Eclipse 导出产品向导时出现的二进制文件夹丢失了。我假设这是现在出了什么问题。

任何想法为什么二进制文件不会在我的无头 PDE 构建中构建?

这也想通了。我曾假设我需要的只是我想要构建的平台的单独启动器插件。由于我试图了解该过程,因此我将插件一一复制到构建服务器。事实证明,在构建中包含平台特定的二进制文件,您需要从 delta 包中获得 org.eclipse.equinox.executable 功能。一旦我将它添加到构建中,二进制文件就开始出现在输出中。使用二进制文件,更新机制完全按照预期工作。

0 投票
3 回答
3611 浏览

eclipse - Eclipse 3.5 可以发现插件目录中的所有包吗?

简单的用例:使用简单的脚本组装一个 Eclipse 产品,只需将包转储到插件目录中。这曾经适用于 3.3 - 3.5 已损坏:我的应用程序无法启动,因为找不到应用程序插件。

问题:解决这个问题的最简单方法是什么?这似乎是我整个升级过程中唯一的痛苦。


尝试:我想这对 P2 来说是一个禁忌:它改为维护 bundles.info 文件,这可能非常聪明..对我来说有点太聪明了。

我的一些想法:

  1. 我可以完全跳过 P2 并回到简单的旧的、简单的 -dirty- 发现机制吗?
  2. 我可以将插件目录设置为“监视目录”吗
    • 看起来我需要为此使用 p2.reconciler ..哦等等,它已经被弃用了:-(错误 251561 ..(感谢 VonC 的指针)
  3. config.ini 中的这个旧设置还能工作吗?(现在被“simpleconfigurator”取代)osgi.bundles=org.eclipse.equinox.common@2:start, org.eclipse.update.configurator@3:start, org.eclipse.core.runtime@start
  4. 我应该打电话给(p2)导演吗?“请拿起我的插件” :)
  5. 我会为此避免使用 dropin 文件夹——这对最终用户来说更是如此。
  6. 如果可能的话,我会避免弄乱 bundles.info。

我还不关心我的产品中的所有这些智能功能——实际上用户根本不使用内置的更新机制。所以我想亲吻(即:只是为了启动),并在需要时添加更多高级支持。

我在Eclipse 论坛上问过这个问题,但还没有答案,所以真的很感激一些启发。另外,请随时纠正我的假设 - 我刚刚阅读了P2 文档,有时看起来令人困惑。谢谢!


回答:实际上,上面的选项 3 似乎仍然有效 - 感谢Francis确认这一点!(它最初不起作用,但这可能是由于缺少一些部门造成的)。我现在唯一的问题是,一些 Eclipse 包实际上需要 simpleconfigurator。所以我想知道换掉它是否会导致问题。

0 投票
2 回答
2995 浏览

java - 为 RCP 应用程序构建更新站点的最佳方式

我有一个 RCP 应用程序,包括:

  • 一个主插件
  • 一个“框架”插件
  • 产品定义文件

  • 产品定义文件位于主插件中(这是个坏主意吗?)。

    产品定义基于“插件”,并且依赖于工作空间中的所有插件。

    现在,我希望 RCP 应用程序的用户能够更新应用程序。这包括新的/更改的 HTML 帮助文件、新插件、现有插件中更改的代码等。

    我需要什么才能做到这一点?

    设置我的工作区/项目层次结构的最佳方法是什么?

    0 投票
    4 回答
    6235 浏览

    eclipse - 在 Eclipse 之外运行 P2 Ant 任务

    我在 Eclipse 中运行良好的 ant 脚本这是其中的一部分:

    但是我希望 Hudson CI 服务器能够运行它,但是,无论我放入 ANT_HOME/lib 中的所有 jar 包,我都无法让这个任务在一个简单的命令行 ant 中运行......我被这个卡住了错误 :

    p2 ant 任务在哪里定义?有没有办法在 Eclipse 之外运行它们?非常感谢您的帮助!安东尼

    0 投票
    1 回答
    327 浏览

    java - 如何使用 Eclipse P2 处理提供的 Java 包

    我得到了一些二进制形式的 OSGi 包,它们声明了对 Java 本身提供的“org.ietf.jgss”之类的包的依赖关系。P2 检测到这些依赖项,当我稍后尝试使用 P2 导向器应用程序安装产品时,安装失败,因为没有捆绑包提供这些包。但是,如果我使用 P2 产品构建,我会得到一个完整的安装产品,我可以使用它。

    我的问题是我不想为应用程序的每个变体创建产品文件和构建。因此尝试了复制所有 P2 存储库的方法,以便使用 P2 控制器在目标系统上安装产品。

    那么如何处理对 Java 提供的包的依赖关系,以及如何“说服”P2 忽略这些包(如果它们是由 Java 本身提供的)。

    感谢您的帮助。

    0 投票
    1 回答
    1206 浏览

    eclipse - 使用 Eclipse UI 运行插件更新

    我正在尝试从命令行更新 Eclipse Galileo SR2 安装的插件。

    类似于此命令的内容(要求特定功能):

    有谁知道是否存在使用 p2 或任何其他 Eclipse 应用程序运行程序的命令?

    0 投票
    3 回答
    1336 浏览

    eclipse - P2 Touchpoint chmod 不起作用?

    我正在使用 Eclipse 3.5.2,并且我创建了一个 p2.inf 并包含以下信息:

    我将 p2.inf 放在片段的 META-INF 文件夹中,但是当我安装更新站点时,libfoo.so 没有执行权限。

    拔掉头发后,我尝试了引用不存在的 *.so 的 p2.inf,但似乎没有任何反应。没有任何类型的错误消息、异常或警告表明 P2 接触点操作失败...

    这是怎么回事?有任何想法吗?

    0 投票
    3 回答
    624 浏览

    eclipse - org.eclipse.test 包的 P2 存储库

    在哪里可以找到包含 org.eclipse.test 的 p2 存储库?

    0 投票
    1 回答
    1716 浏览

    eclipse - 在 Equinox 中是否可以将 OSGi 包标记为从其包含功能的 p2.inf 开始?

    我有一个包含几个包的 Eclipse 功能。我想告诉 p2 在安装该功能时将其中一个捆绑包标记为已启动。这可以使用捆绑包自己的 META-INF/p2.inf 像这样,

    但我想在功能级别而不是捆绑级别执行此操作(有问题的捆绑是第三方的,如果可能的话,我不希望以任何方式修改它)。

    一些研究使我看到了这个文档,它表明应该可以将配置指令移动到包含功能的 p2.inf 中。我已经尝试了所有明显的事情,例如,

    但到目前为止,我尝试过的所有排列都没有任何效果:因为没有任何反应,捆绑包没有标记为已启动,也没有报告错误)。

    任何指针都会非常受欢迎。与 Eclipse Equinox Galileo (3.5.2) 一起使用......与 Helios 相关的答案也将非常有用。

    0 投票
    1 回答
    121 浏览

    eclipse - 在 Equinox 中,是否有可能让一个功能/捆绑包过时另一个功能/捆绑包?

    我有一个基于 Eclipse 的项目(Eclipse 的 Scala IDE),它最近搬到了新家。我想更改各种功能 ID、Bundle-SymbolicNames 等以反映这一举动(即,使它们都具有 org.scala-ide 前缀)并重新启动版本编号(以前它与相应的 Scala 编译器版本相关联我想解耦这些)。

    但我希望 p2 认识到这一点,例如。org.scala-ide.sdt.feature v. 1.0.0 是 ch.epfl.lamp.sdt v. 2.7.7 的升级。使用 RPM 可以使用obsoletes 指令来做到这一点...... p2 是否有等价物?