Eclipse插件(Plugin)開發中的NoClassDefFoundError的解決(2)

開發一個SQL的編輯器插件,擴展名爲sql,但運行後,用file -> open file...打開test.sql文件,Activator能夠構造,但編輯器打不開,添加調試信息,發現ZSqlEditor類根本沒有構造。也沒有任何錯誤信息提示。因此判斷錯誤發生在系統加載插件類的過程中(EclipseJava反射從磁盤動態加載插件的類文件)。

打開runtime workbench下的.log文件,發現Eclipse在加載插件時出現NoClassDefFoundError,如下:

java.lang.NoClassDefFoundError: org/eclipse/jface/text/source/ISourceViewer

但是開發過程中並沒有提示錯誤,打開目標平臺設置,org.eclipse.jface.text插件也在列表中選中。

       經過檢查發現,開發過程中在project->properties中對org.eclipse.jface.text_3.2.2.r322_v20070104.jar(插件)的引用是定位到磁盤的硬引用。而不是出現在plugin dependencies中,造成了運行時找不到類的錯誤。解決方法如下:

a)      將這個硬引用刪除。

b)      使用plugin manifest編輯器下的dependencies選項卡添加對org.eclipse.jface.text插件的引用。問題解決。(或者在plugin.xml<requires>節中或者在MANIFEST.MFrequire-bundle節中添加對org.eclipse.jface.text插件的引用也可)

 

總結:關於插件開發中,對於第三方類的引用和對於其他插件的引用請參考另一篇文檔《Eclipse插件開發中對於Jar包和類文件引用的處理

 
發佈了43 篇原創文章 · 獲贊 29 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章