http://sunmin0.spaces.live.com/blog/cns!9B1BDE08F3EE72D5!107.entry8月22日
Eclipse3.1下JFace和SWT工程環(huán)境配置方法
假設(shè)eclipse目錄為d:\eclipse已經(jīng)建好一個名為MyProject的工程,下面將介紹如何為該工程設(shè)置正確的環(huán)境以使用JFace/SWT開發(fā)GUI程序。
1.為SWT創(chuàng)建類路徑變量。在Eclipse中右鍵選中MyProject,選擇Properties,選擇左側(cè)的Java Build Path,選擇Libraries,點擊AddVariable,來添加各種變量,用它們來表示編譯時所需的各個庫(*.jar)。繼續(xù)ConfigureVariables,然后點擊New按鈕,添加路徑變量,name:SWT_LIB,file:d:/eclipse/plugins/org.eclipse.swt.win32.win32.x86_3.1.0.jar。
2.用上面相同的方法,創(chuàng)建JFACE_LIB變量,name: JFACE_LIB,file:d:/eclipse/plugins/org.eclipse.jface_3.1.0.jar;創(chuàng)建BOOT_LIB變量,name:BOOT_LIB,file:d:/eclipse/plugins/org.eclipse.core.boot_3.0.0.jar;創(chuàng)建RUNTIME_LIB變量,name:RUNTIME_LIB,file:d:/eclipse/plugins/org.eclipse.core.runtime_3.1.0.jar;創(chuàng)建WORKBENCH_LIB變量,name: WORKBENCH_LIB,file:d:/eclipse/plugins/org.eclipse.ui.workbench_3.1.0.jar。
3.在Properties/Java Build Path/Libraries中點擊Add Variable,選中剛才添加的幾個變量,加入到工程中。
4.解壓d:/eclipse/plugins/org.eclipse.swt.win32.win32.x86_3.1.0.jar,將其中的swt-win32-3135.dll拷貝到$PATH環(huán)境變量指向的目錄。(最保險的方法是將它們拷貝到$JAVA/jre/bin目錄中)
更詳細說明文章2篇:
2009-12-22 22:26:08 SWT和JFace是新興的兩個JavaGUI庫,結(jié)合Eclipse開發(fā)平臺的使用,使我們能夠迅速開發(fā)出具有優(yōu)美高效的用戶界面的應(yīng)用程序,下載Eclipse時已經(jīng)下載在插件里面,但在此之前 ,我們必須首先為SWT/JFace設(shè)置適當?shù)沫h(huán)境變量,只有這樣才能順利地編譯和執(zhí)行代碼。
一、開始的情形
如果不為我們的項目設(shè)置適當?shù)腟WT/JFace環(huán)境變量,由于找不到所需的庫文件,所以編譯時Eclipse會報錯,我們看到許多代碼下面出現(xiàn)了紅色的波浪線,并且相應(yīng)行的兩側(cè)還伴隨出現(xiàn)了紅色燈泡和橘紅小方框等圖標,說明代碼在編譯過程中出現(xiàn)了問題,如無法解析Display等,這是因為編譯時沒找到所需的庫文件引起的。
二、為SWT創(chuàng)建類路徑變量
假設(shè)我們的開發(fā)項目名為MyWindow,在Eclipse中右鍵單擊該項目,在彈出的下拉菜單中選擇“屬性”菜單項。然后,在屏幕左側(cè)選中“Java構(gòu)建路徑”,以便告訴Java編譯器到哪里尋找所需的SWT/JFace文件。
先單擊“庫”選項卡,然后單擊“添加變量”按鈕來添加各種變量,用它們來表示編譯時所需的各個庫(*.jar)。在“新建變量類路徑條目”對話框中單擊“配置變量”按鈕。“首選項”窗口出現(xiàn)后,單擊“新建”按鈕。在“名稱”框中輸入SWT_LIB,然后單擊“文件”按鈕來查找對應(yīng)的庫文件。在隨即出現(xiàn)的對話框中,找到C:\eclipse\plugins\org.eclipse.swt.win32.win32.x86_3.2.1.v3235.jar,并雙擊該文件。在“新建變量條目”對話框中,單擊“確定”按鈕,這時SWT_LIB變量將進入到類路徑變量表中。
(注:不同版本的Eclipse庫名字有細微的差別,下同)
三、為JFace創(chuàng)建類路徑變量
1.利用上面介紹的方法,為jface.jar (或jface_new.jar) 文件創(chuàng)建一個名為JFACE_LIB的變量。該文件位于
C:\eclipse\plugins\org.eclipse.jface_3.2.1.M20060908-1000.jar。
2.同上,為位于C:\eclipse\plugins\org.eclipse.core.boot_3.1.100.v20060603.jar文件建立一個名為BOOT_LIB的變量。
3.同上,為位于C:\eclipse\plugins\org.eclipse.core.runtime_3.2.0.v20060603.jar文件建立一個名為RUNTIME_LIB的變量。
4.同上,為位于C:\eclipse\plugins\org.eclipse.ui.workbench_3.2.1.M20060906-0800.jar(或workbench_new.jar)文件建立一個名為WORKBENCH_LIB的變量。
5.單擊“首選項”窗口中的“確定”按鈕。
四、將庫類路徑變量添加到開發(fā)項目
1.在工作臺中,右鍵單擊MyWindow項目,并選擇“屬性”選項。
2.選擇左窗格中的“Java構(gòu)建路徑”,并單擊右窗格中的“庫”選項卡。
3.單擊“添加變量”按鈕,在“新建變量類路徑條目”框中,選中變量JFACE_LIB、BOOT_LIB、 RUNTIME_LIB和WORKBENCH_LIB。
然后分別單擊“確定”按鈕。
(注:新建項目時,重新添加需要的庫名字即可,不必重復(fù)二、三步)
五、為項目添加本機圖形庫
我們知道,用SWT/JFace編寫的GUI與其所運行的平臺的外觀一致,并且速度也與本機程序相仿,這時因為SWT/JFace調(diào)用了操作系統(tǒng)自帶的圖形庫,因此我們要為我們的程序指出從哪里尋找本機圖形庫。
1. SWT本機圖形文件一般名為swt-win-nnnn.dll,這里的nnnn代表四位整數(shù),它們位于
$ECLIPSE/plugins/org.eclipse.swt.win32_x.y.z/os/win32/x86.SWT目錄下。
2.為了確保這些庫文件能為我們的程序所用,最保險的方法是將它們拷貝到$JAVA/jre/bin目錄中(這里$JAVA指的是Java的安裝目錄)。另外,你還可以將它們拷貝到您的開發(fā)項目中?;蛘?,你也可以將本機圖形庫放進java.library.path變量所包含的任何目錄中。我們可以通過,單擊“幫助”à“關(guān)于Eclipse平臺”à“配置詳細信息”查看改變量。此外,還可以通過“控制面板”à“系統(tǒng)”à“高級”à“環(huán)境變量”,來修改PATH變量,讓它包括含有庫文件的目錄。
六、運行結(jié)果
為了查看我們的代碼的運行結(jié)果,在“包資源管理器”中左鍵單擊“HelloSWt.java”程序,然后從“運行”菜單中選擇“運行方式”菜單項,最后選擇“Java應(yīng)用程序”。
SWT庫無法導(dǎo)入的問題
1.SWT壓縮是不用解壓的,你可以把他隨便放在硬盤的某個位置,我一直都把它放在eclipse的根目錄里;
2.“文件”-"導(dǎo)入"--"常規(guī)"->現(xiàn)有項目到工作空間->選擇歸檔文件,把SWT壓縮包添加進去點“完成”;
3.右擊你建好的項目->構(gòu)建路徑 ->配置構(gòu)建路徑->選擇”項目“選項卡->添加->選擇org.eclipse.swt--->點擊完成。
(#)
2006-10-17 13:00作者:蔣濤
寫在前面的話 終于決定提起筆來寫一篇關(guān)于swt和JFace編程的文章。在開始之前,我想先介紹一下你能夠從將要出現(xiàn)的這一系列文章里得到什么,以及更重要的,你不能得到什么。我們的時間是如此之重要,以至于我們很難容忍把它浪費在自己不關(guān)心的事情上。
因為我剛開始寫,所以到底這些文章會分成幾次發(fā)布出來,也很難講。但是我心里大體有這樣一個提綱。也就是說,我打算介紹以下方面的內(nèi)容:
·設(shè)定swt以及JFace的開發(fā)環(huán)境
·swt的一些簡單部件(widget)介紹
·JFace的一些入門性介紹
·swt和JFace的事件模式
·通過一些簡單的例子說明如何利用swt和JFace編寫圖形化應(yīng)用程序
我還要說明一下你不能從本文中得到的信息,這些信息包括:
·swt和JFace相關(guān)內(nèi)容非常深入的介紹:正如你從題目中了解到的,本文的定位是“入門”,也就是說假定的讀者是那些對swt和JFace開發(fā)沒有什么了解的人。所以我并不打算進行一個深入的介紹。因為我相信在入門之后,他們能夠找到更好的資料(此外,我可能會寫另外一個系列文章來介紹)。
·eclipse的使用:我假定你在讀這篇文章的時候已經(jīng)對eclipse有所了解,所以不會解釋到具體eclipse如何使用。
·eclipse插件開發(fā):雖然eclipse插件開發(fā)和本文內(nèi)容有著千絲萬縷的聯(lián)系,我決定還是不把它列為介紹的內(nèi)容。這方面,你仍然可以找到相當多的資料供參考。
延伸閱讀你不知道什么是eclipse么?你可以打開http://www.eclipse.org,這是eclipse的官方站點。
如果你希望對eclipse功能有詳細的了解,你可以讀一下這本書《CONTRIBUTING TO ECLIPSE》。
你不知道什么是swt/JFace么?你可以看一下Wikipedia中的介紹:http://en.wikipedia.org/wiki/Swt
http://en.wikipedia.org/wiki/Eclipse_%28computing%29
最后你可以從一個地方得到所有你想要的東西:http://www.google.com
介紹到此為止,下面我開始正文:
Hello,world!:搭建一個swt/JFace開發(fā)環(huán)境 在前面我曾經(jīng)提到過:我們假定你對eclipse開發(fā)有一些了解。所以在這一節(jié)中,我將示范如何搭建一個swt/JFace開發(fā)環(huán)境,并且用一個老掉牙的Hello,world!程序作為示范。
建立開發(fā)環(huán)境 你完全可以不使用eclipse,而是使用別的IDE來進行開發(fā),但是你需要有swt/JFace的一些庫文件。
為了能夠進行正常的swt/JFace開發(fā),你需要做以下工作:
第一步:建立一個Java工程:因為這個是大家都非常熟悉的,所以就不再贅述,你可以建立一個任何名字的Java工程。
第二步:導(dǎo)入swt以及JFace的庫文件。這也就意味著:將swt/JFace相關(guān)的庫文件導(dǎo)入到工程的classpath中去。
需要的庫文件有哪些呢?打開eclipse安裝目錄下的plugins文件夾,我們需要找到以下jar文件:
·org.eclipse.swt_3.x.x.jar
·org.eclipse.jface_3.x.x.jar
·org.eclipse.core.runtime_3.x.x.jar
·org.eclipse.ui.workbench_3.x.x.jar
這就是我們搭建一個基本swt/JFace程序所需要基本的一些庫文件了。其中3.x.x視你所使用的eclipse版本而定,譬如我的eclipse版本是3.1M6,這些3.x.x就是3.1.0。將他們加入你程序的classpath中。
為了更加清楚地說明如何做,你可以看一下下面的圖1。這是我在eclipse的做法:打開工程的properties對話框,然后選擇Java BuildPath中的Libraries選項卡,將這些jar導(dǎo)入進來。當然你可以有自己的做法。
圖 1
第三步:為你的java程序添加本地庫文件。如果你使用windows的話,你可能注意到在eclipse的plugins目錄下還有一個org.eclipse.swt.win32_3.x.x.jar,將這個jar解壓以后在os/win32/x86目錄下有幾個dll文件。這幾個dll為swt通過JNI訪問windows本地API提供了接口,我們需要將使java程序在啟動時候即能夠訪問它。你可以有多種辦法實現(xiàn)這個目的:
最簡單的辦法就是直接把這幾個文件拷貝到你jre的bin目錄下
你也可以設(shè)定環(huán)境變量時候,在PATH中加入這幾個dll文件的目錄。
你還可以在運行程序時候指定java.library.path為這幾個dll所在的目錄,在eclipse中,如果你打開Help菜單中About eclipsePlatform,然后在出現(xiàn)的對話框中選擇configurationdetails按鈕,你可以在接下來出現(xiàn)的對話框中找到j(luò)ava.library.path
配置java.library.path你還有另外一種辦法,就是在最后運行程序的時候,從Run菜單中選擇Run As..而不是Run As JavaApplication,填寫好必要的其他參數(shù)以后打開Argument選項卡,然后在VMArgument輸入框中填寫該參數(shù)為dll文件的路徑,如圖2所示
圖 2
通過這三步工作,你就可以編寫swt/JFace程序了。
Hello,World!
下面的內(nèi)容就是我們Hello,world!的示例。首先建立一個類,我將這個類取名為HelloSwt,在我的工程中,它位于swtjfacesample包的下面。類的內(nèi)容如下:
1package swtjfacesample; 2 3import org.eclipse.swt.SWT; 4import org.eclipse.swt.widgets.Display; 5import org.eclipse.swt.widgets.Shell; 6import org.eclipse.swt.widgets.Text; 7 8public class HelloSwt { 9 /**//** 10 * Hello,world! 11 * 12 * @param args 13 */ 14 public static void main(String[] args) { 15 Display display = new Display(); 16 Shell shell = new Shell(display); 17 18 Text helloText = new Text(shell, SWT.CENTER); 19 helloText.setText("Hello,World!"); 20 helloText.pack(); 21 22 shell.pack(); 23 shell.open(); 24 25 while (!shell.isDisposed()) { 26 if (!display.readAndDispatch()) { 27 display.sleep(); 28 } 29 } 30 display.dispose(); 31 32 } 33} 34 |
代碼段1
關(guān)于這段代碼的內(nèi)容,我們會在下面的內(nèi)容中進行詳細介紹?,F(xiàn)在我們可以嘗試著運行一下,確定已經(jīng)編譯完成后從eclipse的PackageExplorer中選中這個類然后點右鍵,在彈出的菜單中你會看到Run As,進一步選中這一項,然后在二級菜單中選“Run As JavaApplication”,如果運行正常的話你會看到如圖3的運行結(jié)果:
圖 3
Q&A:出現(xiàn)了問題怎么辦Q:我的程序編譯時候出現(xiàn)了錯誤!
A:如果是提示諸如Text,Display這些類不能夠被成功引入,那么你需要檢查一下是否我們前面提到的jar都已經(jīng)被成功引入到你的classpath
Q:編譯成功了但是不能運行,出現(xiàn)了異常
A:檢查一下異常信息,如果你的異常信息類似這樣:
Exception in thread "main"java.lang.UnsatisfiedLinkError: no swt-win32-3128 in java.library.path
...
的話,那說明我們在前面第三步提到的那些dll沒有正常工作,最好能夠按照前面的說明重新配置一下。
(#)