定制Eclipse IDE之雜症篇


上文回顧:定制Eclipse IDE之插件篇(二)

該篇將講述在開發Eclipse 插件過程發生的疑難雜症。不談功能,只說病症。

前言、拿哪個Eclipse作為定制的基礎?
我建議是你用哪個Eclipse做開發,就使用那個Eclipse作為定制的基礎,因為你的插件是在這上面開發的,決對不會出現缺少必要的依賴插件。如果覺得有些插件沒必要的話,也自行刪除。
 
一、插件存在緩存的現象
在開發插件的時候,有時會存在緩存了上一次運行插件結果的現象。
解決辦法:
1.在run configurations的Eclipse Application里,勾選清除“工作空間”,同時把“清除之前請求確認”勾掉。
 
二、插件里plugin_customization.ini一直不生效
plugin_customization.ini里面是對Eclipse的一些全局配置。有可能你會在的透視圖插件里指定自己的plugin_customization.ini,但是你會發現總是不生效。
配置如下:
<extension
   id="BingoTouch"
   point="org.eclipse.core.runtime.products">
     <product
       application="org.eclipse.ui.ide.workbench"
       name="%name">
          <property name="preferenceCustomization" value="plugin_customization.ini" />
          <property name="appName" value="BingoTouch" />
          <property name="windowImages" value="icons/eclipse16.png,icons/eclipse32.png" />
          <property name="aboutText" value="%aboutText" />
     </product>
</extension>
 
原因解析:
其實這個是取決於你的eclipse.exe下的eclipse.ini指定運行的product是什么,打開這個文件我們會看到:
-product
org.eclipse.epp.package.rcp.product
生效的只是這個product下的plugin_customization.ini
 
解決辦法:
解決辦法有兩種,一是將指定product,指向自己插件(名稱就是自己插件名 + product名)。例如:
-product
com.bingo.ide.perspective.BingoTouch

另外一種是將你要生效的那個plugin_customization.ini覆蓋eclipse\plugins\org.eclipse.epp.package.rcp_4.4.2.20150219-0708 目錄里的plugin_customization.ini(我是用這種方法)。

 
三、IDE的主題設置一直無效
這個原因跟第二個有些類似,你在插件設置的主題一直無效,例如:
<property
      name="cssTheme"
      value="com.appcelerator.titanium.rcp.theme.dashboard">
</property>
原因解析:
還是生效是哪個product的原因
 
解決辦法:
在指定的product里的plugin.xml,將cssTheme屬性值改為你想要的主題id。
 
四、導出的插件中文亂碼了
插件顯示中文時候亂碼了,你可能在插件里面偷懶直接寫中文(正常應該是寫在properties文件配置的,中文用unicode編碼)。
原因解析:
插件里面如果有中文的話,你沒有指定編譯編碼。
 
解決辦法:
直接在build.properties編輯器的"build.properties"編輯頁中,在文件最后添加如下內容(切記兩個點不能少):
javacDefaultEncoding.. = UTF-8

 

五、插件的控制台輸出在mac上顯示亂碼

插件控制台輸出在window正常,而在mac上顯示亂碼了。
解決辦法:
在mac的eclipse.ini加上:
-Dfile.encoding=UTF-8 
 
六、第二次打開eclipse,工具欄上自己新增的圖標向右偏移了
在第一次打開eclipse時候,自己新增圖標還是正常顯示的,當第二次以后打開eclipse時候,圖標就往右偏移了。
原因解析:
這個可能有不同原因,不過我的這個情況是因為主題使用的原因。 我用了aptana的主題,但在主題的樣式文件里面有
.MToolControl.TrimStack {
     handle-image: url(chrome://drag-handle?height=22&background-color=#cccccc&embossed=true);
}

里面handle-image的url無法訪問,引發的問題。

解決辦法:
將里面的圖標下到本地,換相對路徑就正常了。
.MToolControl.TrimStack {
     handle-image: url(./dragHandle.png);
}
 
七、直接運行插件生效,導出放到新eclipse沒有效果
這個問題是個致命的問題,而為了這個問題,我花了兩天去檢查(雖然很多的嘗試都是沒有效果,但最終都引導到正確的路上)。
我嘗試用OSGi控制台來檢查問題(因為篇幅問題,我寫在另一篇文章): Eclipse OSGi調試過程
發現我的插件根本沒有加載到,更別談找錯誤了。
 
原因解析:
在百思不得其解時候,突然想到一個問題,eclipse是不是本身認不到插件,是否有個地方配置這些插件信息。后來終於被我發現,eclipse/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info
所有啟動插件都在這里定義,那就是我需要將我的插件放到這里。
 
解決辦法:
例如:
com.bingo.ide.perspective,1.0.0,dropins/eclipse/plugins/com.bingo.ide.perspective_1.0.0.jar,4,false
我把我的插件信息在這,果然生效了。
 
相關問題:
這出現另外一個問題,因為我的eclipse插件有90多個(別問我為什么這么多),我不可能一條條信息去定義,生成Bundles.info信息,這樣太蠢了。
於是整理了一個簡單的Java程序去生成。代碼如下:
import java.io.File;

/**
* 插件生成后,生成Bundles.info
* @author lufeng
*/
public class BuildInfo {
    
     final static String exportPluginPath = "F:\\source\\bingo-touch\\ide\\release\\window_64\\eclipse\\dropins\\eclipse\\plugins\\";
     final static String pluginPath ="dropins/eclipse/plugins/";
    
     public static void main(String[] args) {
    
             File direct = new File(exportPluginPath);
             File[] files = direct.listFiles();
             for(File f : files){
                 String s = f.getName();
                 int p = s.lastIndexOf("_");
                 if(p == -1)
                      continue;
                 String name = s.substring(0, p);
                 String version = s.substring(p+1);
                 if(version != null && !"".equals(version))
                      version = version.substring(0, version.lastIndexOf("."));
                 //.jar直接拼接,文件夾形式的后邊加"/"
                 if(f.isDirectory())
                     s = s+"/";
                 System.out.println(name+","+version+","+pluginPath +s+",4,false");
             }
         }
    
} 
 
六篇關於我這個月的Eclipse定制就到此為止,希望能幫到人。
 
本文為原創文章,轉載請保留原出處,方便溯源,如有錯誤地方,謝謝指正。
本文地址 : http://www.cnblogs.com/lovesong/p/4694757.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM