我们的插件之一需要已安装的JDK,而不仅仅是JRE。我们需要com.sun.javadoc和来自tools.jar的朋友。我认为Sun的许可证不会允许重新分发tools.jar(如果您已经拥有JDK,则没有必要)。
似乎在Eclipse中也没有办法将JDK指定为依赖项。Eclipse新闻组中的所有答案都建议最终用户必须首先正确配置其Eclipse。
您是否知道有任何解决方法,仅通过使用Eclipse的机载机制来使依赖关系对我们插件的用户显而易见?Import-Package
与com.sun.jdi不同,该包似乎对于清单文件甚至无效。
(作为一种解决方法,当前我们只能在插件激活时警告该库丢失。)
由于eclipse提供了OSGi环境,因此您可以参考文章“ 在OSGi中公开引导类路径 ”,然后尝试使用:
通过指定所需的JDK软件包,OSGI框架将尝试加载它们(如果此处未包含,则会失败)。
通过指定特定于JDK5或JDK6的版本,您甚至可以确保JDK的正确版本。
OSGi规范允许框架(通过其系统捆绑包)使用该
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的一部分(有关Jetty及其config.ini,请参见此示例)。
在您的情况下,它将在片段的config.ini中声明。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句