【问题标题】:Scala Library as an OSGi BundleScala 库作为 OSGi 包
【发布时间】:2011-10-21 09:51:27
【问题描述】:

我做了一个简单的 Eclipse RCP 客户端,现在我想把它变成一个 Scala 应用程序。添加 Scala 特性允许 IDE 编译代码,但它不会运行,因为 Scala 不能作为 OSGi 包提供。搜索网络只返回相互矛盾的信息,这似乎意味着没有“标准”的方式来做到这一点。我发现最近的一篇文章说要使用这个链接:

scala-eclipse-toolchain-osgi-2.9.0-1

但是 Eclipse 说:“那里没有可用的项目”。我可以用浏览器去那里,看看有什么东西。但是我不知道OSGi的底层机制,所以我无法判断出什么问题。我可以用罐子为自己创建一个捆绑包,但这很愚蠢。 Scala 必须已经作为预定义的 OSGi 包在某处可用!

[编辑] 我尝试自己创建捆绑包,就像我使用 Slick-Util 所做的那样,但它也不起作用。这没有逻辑意义。我不明白如何从 Jar 创建一个包可以为 Jar A 工作,但不适用于 Jar B。我什至复制了正在工作的自制 Slick-Util 包,用 scala-library.jar 替换了 jar,并更新了到处都是捆绑名称和其他设置,它仍然无法正常工作。我的猜测是 scala-library.jar 本身有问题,导致 Eclipse 无法使用它。也许它的 Manifest 中有什么?

【问题讨论】:

标签: scala osgi


【解决方案1】:

添加 Scala 特性允许 IDE 编译代码,但它不会运行,因为 Scala 不能作为 OSGi 包提供。

Eclipse 插件提供的Scala 库一个OSGi 包。打开 MANIFEST.MF 并检查 org.scala-ide.scala.library 是否存在于 Dependencies 选项卡中(如果您将 Scala 特性添加到插件项目,它应该已自动添加,但如果您将插件特性添加到 Scala 项目则不会)。

但是 Eclipse 说:“那里没有可用的项目”。我可以用浏览器去那里,看看有什么东西。但是不知道OSGi的底层机制,所以也说不上来是哪里出了问题。

Eclipse 不是在寻找 OSGi 捆绑包,而是在寻找 update site(其中包含包含其他功能和捆绑包的功能)。

【讨论】:

  • 是的,我最终发现了这一点。我想自己发布一个答案,但由于某种原因,Stack-Overflow 不允许我这样做。反正。问题是创建的插件可以作为“应用程序”或“产品”运行。我试图将它作为产品运行,但失败了。抓取我的项目并从头开始,我似乎选择了“应用程序”,然后它就起作用了。我不知道有什么区别。
  • 参见 vogella.de/articles/EclipseRCP/article.html#product_product 了解 Eclipse RCP 中“产品”的定义。
【解决方案2】:

您可以在那里找到 OSGi 的 Scala jar:https://github.com/weiglewilczek/scala-lang-osgi

【讨论】:

  • 我找到了它,但你不能把它作为一个简单的依赖(AFAIK)。您必须使用 Jar 创建一个本地包,这就是困扰我的地方。我原以为我应该只需要给 Eclipse 一个更新站点 URL,这样我就可以自动保持最新状态。
【解决方案3】:

【讨论】:

  • 我也找到了,但和我上面对 J.P.P. 描述的问题一样
【解决方案4】:

其他答案中提供的网址已过时。

我建议使用 Scala IDE 更新站点上提供的捆绑包:

http://download.scala-ide.org/sdk/lithium/e44/scala211/stable/site

【讨论】:

  • 嗨。恐怕我不能同意(+)或不同意(-)你的新答案,因为我不再使用 Scala。
  • 没关系。我只是把它放在这里给其他有同样问题的人。
猜你喜欢
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
  • 2015-01-14
  • 2014-06-17
  • 2013-12-14
  • 1970-01-01
  • 2015-11-25
相关资源
最近更新 更多