swt生成、jar可執行包生成.exe可執行文件(giter)


http://tomfish88.iteye.com/blog/1074786

——————————————————————————————————————————————————————————

最近看了有關swt生成exe文件的有關內容,現將自己的一點經驗分享下:

由於很多的程序是在windows下面運行的,所以很多java開發的應用程序需要打包成可執行文件。

1、生成可執行jar包

其實方法有很多,主要有以下幾種:

利用工具生成,如在eclipse中添加插件fat jar等(百度下,很多的),

也可以用eclispe的export直接導出。

最直接的方法就是用jar命令直接打包了,但是要將manifest.mf加入

到要打包的主目錄下,然后用命jar cvfm yourjarname.jar manifest.mf yourmulu,就可以得到可執行的

jar包了(前提是你的系統jre配置正確,在windows下面默認是javaw執行jar包的),manifest.mf中主要設

置了Main-Class: 也就是你的啟動類,如下:   Manifest-Version:1.0 Main-Class:your.class Created-

By:1.3.0(SunMicrosystemsInc.) 。
注意:在打包swt應用程序時,windows所需的動態連接文件需要放在所生成jar包的同一目錄下,或者在

path路徑里面設置好,否則會出現錯誤。

2、生成exe文件

推薦用exe4j,下載地址:http://www.sstc.org.cn/Components/DetailView.aspx?id=1f30ec33-a275-4d36-b075-c1c5b525f2ab&typename=download

這個用起來比較簡單,不過是E文。
注意:icon的圖片格式就可以了,另外需要將所用到的外部jar加入到classpath中。jdk中的就不需要加了


3、生成安裝程序

推薦用install4j,也是E文的,也是不錯的安裝程序,不過比較復雜些,hehe

 

 

 

 

SWT的介紹(附加:Eclicpse3.1.1下配置SWT,打包發布SWT程序,轉EXE一條龍過程記錄)

一、SWT的介紹

 

SWT(Standard Widget Toolkit)

Standard Widget Toolkit是一個開源的GUI編程框架,與AWT/Swing有相似的用處,著名的開源IDE-eclipse就是用SWT開發的。
   在SWT之前,Sun已經提供了一個跨平台GUI開發工具包AWT (Abstract Windowing Toolkit). 雖然AWT框架也使用的是原生窗口部件(native widgets),但是它一直未能突破LCD問題。LCD問題導致了一些主要平台特征的遺失。
   為解決這個問題,Sun又創建了一個新的框架。這個框架不再使用原生窗口部件,而是使用仿真窗口部件(emulated widgets)。這個方法雖然解決了LCD問題,並且提供了豐富的窗口部件集,但是它也帶來了新的問題。例如,Swing應用程序的界面外觀不再和原生 應用程序的外觀相似。雖然在JVM中這些Swing應用程序已經得到了最大程度的性能改善,但是它們還是存在着其原生對應物所不具有的性能問題。並 且,Swing應用程序消耗太多的內存,這樣Swing不適於一些小設備,如PDA和移動電話等。
  IBM進行了嘗試以徹底解決AWT和Swing框架帶來的上述問題。最終,IBM創建了一個新的GUI庫,這就是SWT。SWT框架通過JNI來訪問原生窗口部件。如果在宿主(host)平台上無法找到一個窗口部件,SWT就會自動地模擬它。
  為了方便開發SWT程序,在SWT基礎上又創建了一個更易用、功能強大的圖形包“JFace”。然而,JFace並不能完全覆蓋SWT的所有功能,所以編程時SWT、JFace都會要用到,但是一般來說,能用JFace的組件就最好不要用SWT的。
   SWT本身僅僅是Eclipse組織為了開發Eclipse IDE環境所編寫的一組底層圖形界面 API。或許是無心插柳,或是有意為之,至今為止,SWT無論是在性能和外觀上,都超越了SUN公司提供的AWT和SWING。目前SWT已經十分穩定。 這里指的穩定應該包含兩層意思:
  一是指性能上的穩定,其中的關鍵是源於SWT的設計理念。SWT最大化了操作系統的圖形構件API,就是說只 要操作系統提供了相應圖形的構件,那么SWT只是簡單應用JNI技術調用它們,只有那些操作系統中不提供的構件,SWT才自己去做一個模擬的實現。可以看 出SWT的性能上的穩定大多時候取決於相應操作系統圖形構件的穩定性。

   另一個穩定是指SWT API包中的類、方法的名稱和結構已經少有改變,程序員不用擔心由於Eclipse組織開發進度很快(Eclipse IDE每天都會有一個Nightly版本的發布),而導致自己的程序代碼變化過大。從一個版本的SWT更新至另一版本,通常只需要簡單將SWT包換掉就可 以了。

 

 

二、Eclicpse3.1.1下配置SWT,打包發布SWT程序,轉EXE一條龍過程記錄

Eclipse下安裝 SWT
我這里用的是1.1.0.1,並且頁面上就有推薦的Eclipse3.1.1,EMF,GEF。都下載了!
2.按照 Eclipse安裝插件的方法,安裝 SWT,EMF,GEF。
3.如果不出意外,就可以正常使用了!
這里有一個建議:最好使用純的Eclipse,我開始用WTP版的,怎么配置也不行。
可以建立Visual Class,但是不能可視化添加控件,或者看不到控件的屬性,或者Text,TextArea控件無法添加。后來按照以上方法,重新來了一次,OK了!
二打包發布 SWT程序
1.因為需要 SWTjar.但是Eclipse3.1.1配合的的SWT不是通過 SWT.jar發布的!是org.eclipse.swt.win32.win32.x86_3.1.0.jar。里面包括了JINI的DLL和 SWT類文件。
需要下載
這里有 SWT.jar,和3個DLL,把他們解壓縮出來,備用!
2.通過 Eclipse的導出功能,生成一個 可執行的jar,MANIFEST.MF文件選擇由 Eclipse生成,並且保存到項目中。
3.上面2的步驟,只是為了得到 MANIFEST.MF文件。下面修改一下這個文件。
加上 Class-Path SWT.jar
如果還有其他的jar,用空格分開,加到后面
4.再生成一次jar, MANIFEST.MF選擇修改后的。
5.將打包的jar, SWT.jar,3個DLL放到一個文件夾下,雙擊可執行的jar,程序運行!
三jar轉EXE
1.打開 JSmooth0.9.7。
2.選擇skeleton,在skeleton properties中先把Launch java app in the exe process,Debug console選中。可以查看生成EXE文件執行過程信息。
3.選擇Executable.
選擇生成的EXE文件存放位置。
選擇EXE文件圖標
設置當前路徑,選擇要轉換的jar文件所在文件夾
4.選擇Application
設置Main Class,可執行jar中的Main Class注意寫類全名
設置Application Argument,如果需要傳入參數,寫到這里
設置Embedded jar: 可執行的jar
設置Classpath:SWT.jar 如果有其他的繼續添加
5.選擇JVM Selection。默認吧。
6.JVM Configuration:
可以設置java properties,內存使用
7.點齒輪。生成!看是否有錯誤。
8.EXE執行需要的文件:EXE,3個DLL,SWT.jar
把他們考到其他目錄,一樣可以執行!
9.去掉skeleton properties中的Launch java app in the exe process,Debug console選項。
重新生成。應該OK了!


免責聲明!

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



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