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

时间:2009-10-03 07:26:37

标签: eclipse java

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

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

您是否知道任何解决方法可以使我们的插件用户明白这种依赖关系,只是使用Eclipse的依赖性机载机制?看起来这个包甚至对清单中的Import-Package都不起作用,不像com.sun.jdi。

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

1 个答案:

答案 0 :(得分:2)

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

  • 系统包声明
  • 扩展捆绑(片段)声明
  • 或启动委派

通过指定所需的JDK包,OSGI框架将尝试加载它们(如果没有,则会失败)。
通过指定一个特定于JDK5或JDK6,您甚至可以确保正确的JDK版本。

  

OSGi规范允许Framework(通过其系统包)使用org.osgi.framework.system.packages属性将任何相关包从其父类加载器导出为系统包。
  由于将主机JDK重新打包为捆绑包不是一个可行的选项,因此可以使用此设置让系统捆绑包(或ID为0的捆绑包)自行导出这些包。 <登记/>   大多数OSGi实现已经使用此属性导出所有公共JDK包(基于检测到的JDK版本)。以下是来自Java 1.6的Equinox配置文件的片段:

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

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


这种配置需要成为Equinox框架的config.ini的一部分(请参阅this example for Jetty及其config.ini)。 在您的情况下,它将在您的片段的config.ini中声明。