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

Shi*_*iSi 6 java eclipse

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

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

你知道任何一种解决方法,只是通过使用Eclipse的依赖性机载机制,使这个依赖对我们插件的用户显而易见吗?看来这个包Import-Package在清单中甚至不起作用,不像com.sun.jdi.

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

Von*_*onC 2

由于eclipse提供了OSGi环境,您可以参考文章“在OSGi中暴露启动类路径”,并尝试使用:

\n\n
    \n
  • 系统包声明
  • \n
  • 扩展包(片段)声明
  • \n
  • 或引导委托
  • \n
\n\n

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

\n\n
\n

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

\n
\n\n
org.osgi.framework.system.packages = \\\n  javax.accessibility,\\\n  javax.activity,\\\n  javax.crypto,\\\n  javax.crypto.interfaces,\\\n  \xe2\x80\xa6\n  org.xml.sax.helpers\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

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

\n
\n\n
org.osgi.framework.system.packages = \\\n  javax.accessibility,\\\n  javax.activity,\\\n  \xe2\x80\xa6\n  org.xml.sax.helpers, \\\n  special.parent.package\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

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

\n\n
\n\n

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

\n