如果啟動正常
可以進一步嘗試在Eclipse中調試Servlet或JSP程序
下面我們將用Tomcat自帶的Servlet例程HelloWorldExample
java來示范一下如何在Eclipse中調試Sevlet程序
首先要在Java視圖中新建一個Java項目
為了方便
可以直接將項目路徑指定到HelloWorldExmaple程序所在路徑
之後按
Next
進入Java Settings對話框
選擇Libraries標簽
並用Add External JARs按鈕來指定Servlet
jar包的位置
這裡直接用了Tomcat中的Servlet
jar包
最後
點擊
Finish
完成項目的生成
在新生成項目中的default package可以找到HelloWorldExample
java
雙擊打開文件
並可嘗試給HelloWorldExample加上一個斷點(雙擊編輯窗口左側邊界)
之後在外部浏覽器中輸//localhost:
/examples/servlet/HelloWorldExample
再回過來看Eclipse發生了什麼變化
是一個調試窗口呀!在Eclipse中進行的調試操作和絕大多數的IDE大同小異
如設置斷點
單步跟蹤
變量值察看等等
在這裡也就不用再詳述了
Eclipse最有魅力的地方就是它的插件體系結構
在這個體系中重要的概念是擴展點(extension points)
也就是為插件提供的接口
每一個插件都是在現有的擴展點上開發
並可能還留有自己的擴展點
以便在這個插件上繼續開發
由於有了插件
Eclipse系統的核心部分在啟動的時候要完成的工作十分簡單
啟動平台的基礎部分和查找系統的插件
在Eclipse中實現的絕大部分功能是由相應的插件完成的
比如WrokBench UI插件完成界面的外觀顯示
Resource Management插件完成維護或生成項目或文件等資源管理工作(在下面的第二個例子就會用到這個插件)
而Version and Configuration Management (VCM)插件則負責完成版本控制功能
等等
雖然以上提到的每一個功能都是絕大多數IDE環境所必備的功能
Eclipse卻也把它們都做成了插件模式
甚至用來開發Java程序的開發環境(Java development tooling
JDT)也只不過是Eclipse系統中的一個普通插件而已
整個Eclipse體系結構就象一個大拼圖
可以不斷的向上加插件
同時
現有插件上還可以再加插件
下面的插件開發示例就是在WorkBench UI插件中的觀察窗口擴展點上開發的
本文第一部分介紹過Eclipse的開發界面其中之一就是觀察窗口
它通常配合編輯窗口顯示一些有用的信息
在這裡我們只簡單生成一個顯示歡迎信息的觀察窗口
假設新插件的名子叫Welcome
第一步
先用向導新建一個Java項目
我們可以在菜單欄選擇FileàNew
或用工具欄的向導按鍵
或是在資源窗口用鼠標右鍵菜單中的New
打開向導對話框
然後用缺省方式創建項目
並在項目中建立一個Welcome
java文件
代碼如下
package com
nidapeng
eclipse
plugin;
import org
eclipse
swt
widgets
Composite;
import org
eclipse
swt
widgets
Label;
import org
eclipse
swt
SWT;
import org
eclipse
ui
part
ViewPart;
public class Welcome extends ViewPart {
Label label;
public Welcome() {
}
public void createPartControl(Composite parent) {
label = new Label(parent
SWT
WRAP);
label
setText(
Welcome to Eclipse
);
}
public void setFocus() {
}
}
為使這個程序能正常編譯
要配置它的編譯環境
即指定所需的CLASSPATH
在Eclipse中可以用幾種方法
常用的是兩種
第一是在資源窗口或Java包窗口選中該項目
點擊鼠標右鍵
在打開的菜單中選擇屬性(Properties)
之後在屬性對話框中選擇Java Build PathàLibraries
用Add External JARs功能添加三個包
它們都是Eclipse的現有插件的類包
可以在
你的Eclipse安裝路徑plugins
下面的相應路徑中找到
分別是re
runtime插件中的runtime
jar
org
eclipse
swt中的swt
jar和org
eclipse
ui中的workbench
jar
第二種指定CLASSPATH的方法是先將以上提到的三個包直接導入到Eclipse中的某下一個項目中
如果導入到和Welcome
java相同的項目中
則無需進一步指定CLASSPATH
否則需要在項目的屬性菜單中選擇Java Build PathàProjects
然後選中這三個包所在的項目
在plugin
xml中一共有四個主要的標簽
plugin
requires
runtime
extension
其中plugin標簽的屬性提供的是我們要開發的Welcome插件的基本信息
除了name
version
provider
name等
最重要的是id
它要求不能和現有的Eclipse插件id有沖突
因此我們用包名作為插件的id
requires標簽中所列出的是需要的插件
這裡我們要用到Eclipse Workbench和SWT API
因此導入了org
eclipse
ui插件
runtime標簽指明的是我們開發的插件所在JAR包的文件名
extension標簽是插件擴展點的信息
org
eclipse
ui
views是Eclipse系統提供的觀察窗口擴展點
我們的例子是一個觀察窗口(View)
這表明我們是要在 org
eclipse
ui
views擴展點上進一步開發
extension中還包括category和view兩個標簽
在後續的啟動Welcome插件步驟中
我們就會知道這兩個標簽的含義
要注意的是category和view標簽的id的唯一性
並且在view的屬性中聲明了Welcome插件的類名
在Eclipse中為plugin
xml提供了缺省可視化的編輯器
在編寫plugin
xml過程中可以借助這個編輯器完成一些工作
如果你直接錄入了plugin
xml文件源代碼
還可以用這個編輯器校驗你的代碼
如果編輯器不能正確讀入
就表明你的plugin
xml有一些問題
在確認Weclome
java和plugin
xml都正確無誤之後
可以用Eclipse菜單欄中的Export命令將Weclome
java導出為JAR文件
它的名子應該和plugin
xml中runtime聲明的JAR相一致
同時導出plugin
xml
安裝Welcome插件的方法和本文第一部分介紹的安裝Tomcat插件方法是一樣的
首先在
Eclipse的安裝路徑plugins
路徑下面建立一個com
nidapeng
eclipse
plugin路徑
然後將Weclome
jar和plugin
xml拷到這個路徑下
之後必需重新啟動Eclipse
在Eclipse啟動的時候
它會搜索所有在插件路徑下的插件並注冊它們(僅僅是注冊
只有在需要某個插件的時候
Eclipse才會啟動它)
在重新啟動的Eclipse的菜單欄中選擇PerspectiveàShow ViewàOthers
在打開的對話框中我們會找到在plugin
xml中extension的category標簽中聲明的name屬性
Welcome
在Welcome的支結點中包含了view標簽name屬性
Welcome to Eclipse
選中它並確認
Welcome窗口就會顯示在Eclipse Workbench上的某個位置
如果在執行了以上操作
但沒有顯示新窗口
可以再次打開Show View菜單
此時在菜單中應該有新一頂選擇
Welcome to Eclipse
然後選中它
上面我們完成了一個觀察窗口的插件
但這個操作過程對開發稍微復雜一些的插件就顯得不太方便了
每次測試都要將代碼打包
發布
再重新啟動Eclipse系統!為此Eclipse提供了一個專門為開發插件而做插件(有點繞嘴)
Plug
in Development Environment(PDE)
本文前面曾提到
目前Eclipse的Release或Stable版本缺省提供了這個插件
因此如果安裝的Eclipse是這兩個版本中的一個就可以直接進行下面的步驟
下面我們再用PDE環境開發一個稍微復雜一些的插件
第一步仍然要新建一個項目
只是在向導中不是用Java項目
而是Plug
in Development中的Plug
in Project
在應用向導生成新項目的時候
要注意兩點
第一是PDE的項目名稱就是plugin的id
因此要保證它的唯一性
這裡我們的項目名是com
nidapeng
eclipse
plugin
pde
其次為了進一步說明Eclipse插件的結構
在Plug
in Code Generators中
選擇用向導模板生成一個缺省的插件
這個用缺省方式生成的插件類對於我們將要的代碼並不是必需的
也可以用生成空插件的方式建立我們的項目
這樣做只是為進一步說明Eclipse的插件結構
項目生成之後
在我們的項目中會包含一個PdePlugin
java文件
它就是以缺省方式生成的插件類
注意到它繼承了AbstractUIPlugin類
而AbstractUIPlugin類實現了org
eclipse
ui
plugin接口
事實上
所有的Eclipse插件都會有一個相應的實現plugin接口的類
這個類將是新插件的主類(類似於有main()函數的Java類)
它負責管理插件的生存期
在我們的AbstractUIPlugin繼承子類中
可以用singleton模式來保存在Eclipse中的生成的該插件的第一個也是唯一實例
一般來說
在該繼承子類中也要實現一個getDefault()方法以返回當前插件的實例
而且
當Eclipse首次使用該插件的時候
這個主類將是第一個被調用的類
因此我們也可以在它的代碼中執行一些初始化的工作
而且如果插件需要使用Preferences
Dialogs或Images資源
也可以通過這個類中的相應方法來得到它們的實例
如用其中的getDialogSettings()
getPreferenceStore()
getImageRegistry()方法
但是象前面提到的
PdePlugin
java對下面的例子並不是必需的
我們不用對它進行任何修改
在我們第一個例子中的Weclome插件
根本就沒有生成AbstractUIPlugin的繼承子類
此時系統會自動為Weclome插件生成一個缺省的主類(類似於Java類構造函數
如果沒有聲明
系統會指定一個默認的構造函數)
下面的代碼是才真正實現了我們新插件的功能
假設這個插件名子是NoticeView
package com
nidapeng
eclipse
plugin
pde;
import re
resources
*;
import re
resources
IResourceChangeEvent;
import re
runtime
CoreException;
import java
util
ResourceBundle;
import org
eclipse
swt
widgets
Label;
import org
eclipse
swt
widgets
Composite;
import org
eclipse
ui
part
View
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28353.html