取决于Eclipse中tools.jar(sun JDK)中的com.sun.javadoc

取决于Eclipse中tools.jar(sun JDK)中的com.sun.javadoc,eclipse,java,Eclipse,Java,我们的一个插件需要安装JDK,而不仅仅是JRE。我们需要com.sun.javadoc和tools.jar中的朋友。我认为Sun的许可证不允许重新分发tools.jar(如果您已经有了JDK,就不需要这样做) 在Eclipse中似乎也没有办法将JDK指定为依赖项。Eclipse新闻组中的所有答案都表明,最终用户必须首先正确配置他们的Eclipse 您知道有什么解决方法可以让我们的插件用户通过使用Eclipse的板载依赖机制来了解这种依赖关系吗?与例如com.sun.jdi不同的是,该包似乎对清单

我们的一个插件需要安装JDK,而不仅仅是JRE。我们需要com.sun.javadoc和tools.jar中的朋友。我认为Sun的许可证不允许重新分发tools.jar(如果您已经有了JDK,就不需要这样做)

在Eclipse中似乎也没有办法将JDK指定为依赖项。Eclipse新闻组中的所有答案都表明,最终用户必须首先正确配置他们的Eclipse

您知道有什么解决方法可以让我们的插件用户通过使用Eclipse的板载依赖机制来了解这种依赖关系吗?与例如com.sun.jdi不同的是,该包似乎对清单中的导入包
无效


(作为一种解决方法,目前我们只能在插件激活时警告此库丢失。)

由于eclipse提供了OSGi环境,您可以参考文章“”,并尝试使用:

  • 系统包声明
  • 扩展包(片段)声明
  • 或引导委派
通过指定所需的JDK包,OSGI框架将尝试加载它们(如果没有,则加载失败)。
通过指定一个特定于JDK5或JDK6的版本,您甚至可以确保JDK的正确版本

OSGi规范允许框架(通过其系统包)使用
org.OSGi.Framework.system.packages
属性将父类加载器中的任何相关包导出为系统包。
由于将托管
JDK
重新打包为捆绑包不是一个可行的选项,因此可以使用此设置让系统捆绑包(或id为0的捆绑包)自己导出这些包。

大多数OSGi实现已经使用此属性导出所有公共JDK包(基于检测到的JDK版本)。下面是Java 1.6的Equinox配置文件的一个片段:

使用此属性,可以添加额外的包,这些包将由框架加载和提供,并且可以连接到其他包


注意:更简单的指定解决方案仅适用于JRE,而不是JDK


这种配置需要是Equinox框架的config.ini的一部分(请参阅及其部分)。

在您的情况下,它将在片段的config.ini中声明。

谢谢,这似乎是正确的方向。我现在需要找出如何提供这样一个片段。您不知道org.osgi.framework.system.packages
必须进入哪里?注意(),在osgi R4.2(在Equinox 3.5中实现)中,我们添加了一个新属性(
org.osgi.framework.system.packages.extra
),该属性可用于将更多的包添加到框架确定可从VM获得的包中,但目前没有“排除”属性。另请参见(Equinox框架的config.ini)刚才在我的回答中添加了
org.osgi.framework.system.packages
声明文件(片段的config.ini)。
org.osgi.framework.system.packages = \
  javax.accessibility,\
  javax.activity,\
  javax.crypto,\
  javax.crypto.interfaces,\
  …
  org.xml.sax.helpers
org.osgi.framework.system.packages = \
  javax.accessibility,\
  javax.activity,\
  …
  org.xml.sax.helpers, \
  special.parent.package