簡體   English   中英

取決於Eclipse中tools.jar(Sun JDK)的com.sun.javadoc

[英]Depending on com.sun.javadoc from tools.jar (Sun JDK) in Eclipse

我們的一個插件需要安裝JDK,而不僅僅是JRE。 我們需要來自tools.jar的com.sun.javadoc和朋友。 我不認為Sun的許可證會允許重新分發tools.jar(如果你已經擁有JDK則不需要)。

Eclipse中似乎也沒有辦法將JDK指定為依賴項。 Eclipse新聞組中的所有答案都表明最終用戶必須首先正確配置他們的Eclipse。

你知道任何一種解決方法, 只是通過使用Eclipse的依賴性機載機制,使這個依賴對我們插件的用戶顯而易見嗎? 看來這個包甚至對清單中的Import-Package都沒有效,不像com.sun.jdi。

(作為解決方法,目前我們只能在插件激活時警告此庫缺失。)

由於eclipse提供了OSGi環境,您可以參考文章“ 在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的一部分(請參閱Jetty及其config.ini的 此示例 )。
在您的情況下,它將在您的片段的config.ini中聲明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM