心有多大舞臺便有多大

          Embrace changes, pursue excellence, share niceness.

          equinox開發(fā)osgi時的一個小技巧:定義公用的jar文件.

          一般在開發(fā)java項目的時候,我們會有一些公用的jar文件,在開發(fā)bundle的時候,如果把這些jar文件重復(fù)的在各bundle中復(fù)制的話,即煩瑣,又容易出錯.
          今天我琢磨出一個方法,雖然不敢說這么做是否是正確方法,但至少解決了正確的問題(用錯誤的方法解決正確的事總比用正確的方法解決錯誤的事好!哈哈).下面是解決的方法:
           1.修改org.eclipse.osgi.xxxxxx.jar文件
             a.把文件中META-INF目錄中的ECLIPSE.SF,ECLIPSE.RSA文件刪除掉(因為jar文件是通過SF文件來保證jar中的內(nèi)容不被篡改!如果不了解這個的,可以去查下jar的詳細(xì)說明)
             b.修改jar根目錄下的J2SE-1.5.profile文件(如果你開發(fā)osgi使用的是其它J2SE環(huán)境,請編輯相應(yīng)的文件)
                這個文件中定義了osgi啟動時的org.osgi.framework.system.packages屬性,因為osgi中每個bundle都有自己獨(dú)立的classpath,那么在各個bundle之間共享的class就是通過這個屬性中定義的包來指定的.(如果不了解osgi的class載入機(jī)制,請參閱osgi的入門教材!),你可以在文件中的這個屬性值上加入自己的包,例如:
           ........
           org.ietf.jgss,\
           org.omg.*,\
           org.w3c.*,\
           org.xml.*,\
           sun.*,\
           demo.*           //這一行是新增加的包
          2.把demo.*所在的jar文件加入到啟動osgi的classpath中,一般你可以系統(tǒng)環(huán)境變量的classpath中加入這個jar文件路徑.
          3.把第1步中修改后的osgi jar文件拷貝到eclipse的plugins目錄下,重新啟動eclipse
          4.打開一個bundle的MANIFEST.MF文件,在dependencies項中,你就可以在imported packages中導(dǎo)入剛才定義的demo包了.

          雖然這樣做可以做到在各個bundle間共享一些jar文件,但這些公用的jar一定要確認(rèn)清楚,否則會給以后的開發(fā)帶來麻煩!因為之所以用osgi來開發(fā),就是為了使用它的class loader的管理機(jī)制.

          posted on 2008-05-29 19:33 pony 閱讀(2750) 評論(3)  編輯  收藏 所屬分類: Java

          評論

          # re: equinox開發(fā)osgi時的一個小技巧:定義公用的jar文件. 2008-05-30 09:31 遲來的兵

          其實可以不需要修改人家的東西,我們可以把依賴的每一個jar包都做成bundle,把需要的包export出去,就像eclipse那樣。不過需要把這些jar包放在一起管理,避免重復(fù)制作bundle。  回復(fù)  更多評論   

          # re: equinox開發(fā)osgi時的一個小技巧:定義公用的jar文件. 2008-05-30 10:19 Link

          同意樓上的,公用的類庫可以做成一個Bundle,在Bundle中把每個包都Export出來,這樣Hacker OSGi本身,感覺有點(diǎn)不妥。  回復(fù)  更多評論   

          # re: equinox開發(fā)osgi時的一個小技巧:定義公用的jar文件. 2008-05-30 13:40 Always BaNg.

          這樣是不是太麻煩了一點(diǎn)?如果下一版本Equinox不這么干你的豈不是不兼容了?

          寫個批處理,把所有公用的jar打到一個jar包,然后轉(zhuǎn)換jar為bundle,豈不更好?

          或者在Eclipse的向?qū)В篜lug-in Development中有一個向?qū)Ь褪?br>Plug-in from existing JAR archives

          我都是這么干的:)  回復(fù)  更多評論   

          主站蜘蛛池模板: 通辽市| 滁州市| 涞水县| 乡城县| 长垣县| 庄河市| 虞城县| 通州区| 华安县| 延津县| 无棣县| 云龙县| 神木县| 华宁县| 叶城县| 屏边| 长阳| 山阴县| SHOW| 尼木县| 大足县| 屏山县| 德昌县| 灵璧县| 北京市| 沙洋县| 临漳县| 天峨县| 凤台县| 嘉义县| 湖口县| 日喀则市| 确山县| 隆子县| 延庆县| 巴林左旗| 百色市| 黄大仙区| 海兴县| 溧水县| 阳谷县|