亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

怎樣制作可執行的java程序

2024-07-21 02:39:02
字體:
來源:轉載
供稿:網友

  經常在網上看到有人詢問:如何把java程序編譯成.exe文件。通常回答只有兩種,一種是制作一個可執行的JAR文件包,然后就可以像.chm文檔一樣雙擊運行了;而另一種是使用JET來進行
  編譯。但是JET是要用錢買的,而且據說JET也不是能把所有的Java程序都編譯成執行文件,性能也要打些折扣。所以,使用制作可執行JAR文件包的方法就是最佳選擇了,何況它還能保持Java的跨平臺特性。
  
  下面就來看看什么是JAR文件包吧:
  
  1.JAR文件包
  JAR文件就是JavaArchiveFile,顧名思意,它的應用是與Java息息相關的,是Java的一種文檔格式。JAR文件非常類似Zip文件--準確的說,它就是ZIP文件,所以叫它文件包。JAR文件與ZIP文件唯一的區別就是在JAR文件的內容中,包含了一個META-INF/MANIFEST.MF文件,這個文件是在生成JAR文件的時候自動創建的。舉個例子,假如我們具有如下目錄結構的一些文件:
  
  ==
  
  `--test
  
  `--Test.class
  
  把它壓縮成ZIP文件test.zip,則這個ZIP文件的內部目錄結構為:
  
  test.zip
  
  `--test
  
  `--Test.class
  
  假如我們使用JDK的jar命令把它打成JAR文件包test.jar,則這個JAR文件的內部目錄結構為:
  
  test.jar
  
  --META-INF
  
   `--MANIFEST.MF
  
  `--test
  
  `--Test.class
  
  2.創建可執行的JAR文件包
  制作一個可執行的JAR文件包來發布你的程序是JAR文件包最典型的用法。
  
  Java程序是由若干個.class文件組成的。這些.class文件必須根據它們所屬的包不同而分級分目錄存放;運行前需要把所有用到的包的根目錄指定給CLASSPATH環境變量或者java命令的-cp參數;運行時還要到控制臺下去使用java命令來運行,假如需要直接雙擊運行必須寫Windows的批處理文件(.bat)或者linux的Shell程序。因此,許多人說,Java是一種方便開發者苦了用戶的程序設計語言。
  
  其實不然,假如開發者能夠制作一個可執行的JAR文件包交給用戶,那么用戶使用起來就方便了。在Windows下安裝JRE(JavaRuntimeEnvironment)的時候,安裝文件會將.jar文件映射給javaw.exe打開。那么,對于一個可執行的JAR文件包,用戶只需要雙擊它就可以運行程序了,和閱讀.chm文檔一樣方便(.chm文檔默認是由hh.exe打開的)。那么,現在的要害,就是如何來創建這個可執行的JAR文件包。
  
  創建可執行的JAR文件包,需要使用帶cvfm參數的jar命令,同樣以上述test目錄為例,命令如下:
  
  jarcvfmtest.jarmanifest.mftest
  
  這里test.jar和manifest.mf兩個文件,分別是對應的參數f和m,其重頭戲在manifest.mf。因為要創建可執行的JAR文件包,光靠指定一個manifest.mf文件是不夠的,因為MANIFEST是JAR文件包的特征,可執行的JAR文件包和不可執行的JAR文件包都包含MANIFEST。要害在于可執行JAR文件包的MANIFEST,其內容包含了Main-Class一項。這在MANIFEST中書寫格式如下:
  
  Main-Class:可執行主類全名(包含包名)
  
  例如,假設上例中的Test.class是屬于test包的,而且是可執行的類(定義了publicstaticvoidmain(String[])方法),那么這個manifest.mf可以編輯如下:
  
  Main-Class:test.Test<回車>
  
  這個manifest.mf可以放在任何位置,也可以是其它的文件名,只需要有Main-Class:test.Test一行,且該行以一個回車符結束即可。創建了manifest.mf文件之后,我們的目錄結構變為:
  
  ==
  
  test
  
  Test.class
  
  manifest.mf
  
  這時候,需要到test目錄的上級目錄中去使用jar命令來創建JAR文件包。也就是在目錄樹中使用“==”表示的那個目錄中,使用如下命令:
  
  jarcvfmtest.jarmanifest.mftest
  
  之后在“==”目錄中創建了test.jar,這個test.jar就是執行的JAR文件包。運行時只需要使用java-jartest.jar命令即可。
  
  需要注重的是,創建的JAR文件包中需要包含完整的、與Java程序的包結構對應的目錄結構,就像上例一樣。而Main-Class指定的類,也必須是完整的、包含包路徑的類名,如上例的test.Test;而且在沒有打成JAR文件包之前可以使用java<類名>來運行這個類,即在上例中javatest.Test是可以正確運行的(當然要在CLASSPATH正確的情況下)。
  
  3.jar命令詳解
  jar是隨JDK安裝的,在JDK安裝目錄下的bin目錄中,Windows下文件名為jar.exe,Linux下文件名為jar。
它的運行需要用到JDK安裝目錄下lib目錄中的tools.jar文件。不過我們除了安裝JDK什么也不需要做,因為SUN已經幫我們做好了。我們甚至不需要將tools.jar放到CLASSPATH中。
  
  使用不帶任何的jar命令我們可以看到jar命令的用法如下:
  
  jar{ctxu}[vfm0M][jar-文件][manifest-文件][-C目錄]文件名...
  
  其中{ctxu}是jar命令的子命令,每次jar命令只能包含ctxu中的一個,它們分別表示:
  
  -c 創建新的JAR文件包
  
  -t 列出JAR文件包的內容列表
  
  -x 展開JAR文件包的指定文件或者所有文件
  
  -u 更新已存在的JAR文件包(添加文件到JAR文件包中)
  
  [vfm0M]中的選項可以任選,也可以不選,它們是jar命令的選項參數
  
  -v 生成具體報告并打印到標準輸出
  
  -f 指定JAR文件名,通常這個參數是必須的
  
  -m 指定需要包含的MANIFEST清單文件
  
  -0 只存儲,不壓縮,這樣產生的JAR文件包會比不用該參數產生的體積大,但速度更快
  
  -M 不產生所有項的清單(MANIFEST〕文件,此參數會忽略-m參數
  
  [jar-文件]即需要生成、查看、更新或者解開的JAR文件包,它是-f參數的附屬參數
  
  [manifest-文件]即MANIFEST清單文件,它是-m參數的附屬參數
  
  [-C目錄]表示轉到指定目錄下去執行這個jar命令的操作。它相當于先使用cd命令轉該目錄下再執行不帶-C參數的jar命令,它只能在創建和更新JAR文件包的時候可用。
  
  文件名...指定一個文件/目錄列表,這些文件/目錄就是要添加到JAR文件包中的文件/目錄。假如指定了目錄,那么jar命令打包的時候會自動把該目錄中的所有文件和子目錄打入包中。
  
  下面舉一些例子來說明jar命令的用法:
  
  1)jarcftest.jartest
  
  該命令沒有執行過程的顯示,執行結果是在當前目錄生成了test.jar文件。假如當前目錄已經存在test.jar,那么該文件將被覆蓋。
  
  2)jarcvftest.jartest
  
  該命令與上例中的結果相同,但是由于v參數的作用,顯示出了打包過程,如下:
  
  標明清單(manifest)
  
  增加:test/(讀入=0)(寫出=0)(存儲了0%)
  
  增加:test/Test.class(讀入=7)(寫出=6)(壓縮了14%)
  
  3)jarcvfMtest.jartest
  
  該命令與2)結果類似,但在生成的test.jar中沒有包含META-INF/MANIFEST文件,打包過程的信息也略有差別:
  
  增加:test/(讀入=0)(寫出=0)(存儲了0%)
  
  增加:test/Test.class(讀入=7)(寫出=6)(壓縮了14%)
  
  4)jarcvfmtest.jarmanifest.mftest
  
  運行結果與2)相似,顯示信息也相同,只是生成JAR包中的META-INF/MANIFEST內容不同,是包含了manifest.mf的內容
  
  5)jartftest.jar
  
  在test.jar已經存在的情況下,可以查看test.jar中的內容,如對于2)和3)生成的test.jar分別應該此命令,結果如下;
  
  對于2)
  
  META-INF/
  
  META-INF/MANIFEST.MF
  
  test/
  
  test/Test.class
  
  對于3)
  
  test/
  
  test/Test.class
  
  6)jartvftest.jar
  
  除顯示5)中顯示的內容外,還包括包內文件的具體信息,如:
  
  0WedJun1915:39:06GMT2002META-INF/
  
  86WedJun1915:39:06GMT2002META-INF/MANIFEST.MF
  
  0WedJun1915:33:04GMT2002test/
  
  7WedJun1915:33:04GMT2002test/Test.class
  
  7)jarxftest.jar
  
  解開test.jar到當前目錄,不顯示任何信息,對于2)生成的test.jar,解開后的目錄結構如下:
  
  ==
  
  --META-INF
  
   `--MANIFEST
  
  `--test
  
  `--Test.class
  
  8)jarxvftest.jar
  
  運行結果與7)相同,對于解壓過程有具體信息顯示,如:
  
  創建:META-INF/
  
  展開:META-INF/MANIFEST.MF
  
  創建:test/
  
  展開:test/Test.class
  
  9)jaruftest.jarmanifest.mf
  
  在test.jar中添加了文件manifest.mf,此使用jartf來查看test.jar可以發現test.jar中比原來多了一個manifest。這里順便提一下,假如使用-m參數并指定manifest.mf文件,那么manifest.mf是作為清單文件MANIFEST來使用的,它的內容會被添加到MANIFEST中;但是,假如作為一般文件添加到JAR文件包中,它跟一般文件無異。

  
  10)jaruvftest.jarmanifest.mf
  
  與9)結果相同,同時有具體信息顯示,如:
  
  增加:manifest.mf(讀入=17)(寫出=19)(壓縮了-11%)
  
  4.關于JAR文件包的一些技巧
  1)使用unzip來

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美在线观看| 7777免费精品视频| 日韩经典第一页| 成人激情视频在线| 欧美福利视频在线观看| 日韩在线视频免费观看高清中文| 欧美日韩国产成人高清视频| 日韩大陆欧美高清视频区| 久久久之久亚州精品露出| 亚洲欧洲日产国码av系列天堂| 久久久久久噜噜噜久久久精品| 国语自产精品视频在免费| 久久久电影免费观看完整版| 国产视频精品一区二区三区| 性欧美长视频免费观看不卡| 538国产精品视频一区二区| 一区二区三区国产视频| 日韩中文有码在线视频| 亚洲第一网站免费视频| 国产在线精品一区免费香蕉| 精品国产999| 最近的2019中文字幕免费一页| 92国产精品久久久久首页| 亚洲欧美激情精品一区二区| 97香蕉超级碰碰久久免费软件| 57pao成人永久免费视频| 国产精品久久久久久久久久三级| 国产在线视频一区| 日韩中文在线观看| 91亚洲国产成人精品性色| 欧美在线视频在线播放完整版免费观看| 亚洲r级在线观看| 久久综合网hezyo| 亚洲美女喷白浆| 久色乳综合思思在线视频| 欧美人在线观看| 日韩免费中文字幕| 国产精品丝袜视频| 欧美成人免费一级人片100| 中日韩美女免费视频网站在线观看| 欧美性生交xxxxxdddd| 亚洲男人的天堂在线播放| 欧美成人免费小视频| 日韩一区在线视频| 亚洲第一中文字幕| 亚洲天堂影视av| 在线视频欧美日韩| 都市激情亚洲色图| 久久青草精品视频免费观看| 欧美成人精品不卡视频在线观看| 欧美日韩免费区域视频在线观看| 国产精品老女人视频| 久久精品国产99国产精品澳门| 91丝袜美腿美女视频网站| 日韩黄色在线免费观看| 亚洲偷熟乱区亚洲香蕉av| 在线精品国产成人综合| 欧美电影《睫毛膏》| 亚洲片国产一区一级在线观看| 亚洲午夜精品久久久久久性色| 亚洲一区二区三区在线免费观看| 欧美一级黄色网| 久国内精品在线| 欧美日韩国产一区二区| 亚洲自拍高清视频网站| 亚洲美女av在线播放| 国产一区二区色| 色妞一区二区三区| 欧美视频在线观看免费| 国产精品一区二区性色av| 中日韩美女免费视频网址在线观看| 日韩欧美在线一区| 久久国内精品一国内精品| 成人做爰www免费看视频网站| 狠狠色狠狠色综合日日小说| 久久久www成人免费精品| 欧美大学生性色视频| 亚洲老司机av| 欧美一区二区三区精品电影| 欧美中文在线视频| 国产不卡在线观看| 色播久久人人爽人人爽人人片视av| 在线亚洲午夜片av大片| 欧美电影免费在线观看| 色噜噜狠狠狠综合曰曰曰88av| 欧美精品在线视频观看| 欧美成人免费观看| 亚洲欧美日本另类| 亚洲xxx视频| 亚洲区在线播放| 伊人亚洲福利一区二区三区| 美女国内精品自产拍在线播放| 亚洲国产精品va在线| 久久久久久一区二区三区| 欧美成人精品在线观看| 亚洲人成电影网| 色琪琪综合男人的天堂aⅴ视频| 精品国产91乱高清在线观看| 国产精品第三页| 亚洲一品av免费观看| 亚洲欧美另类中文字幕| 久久久久久午夜| 亚洲精品免费在线视频| 欧美午夜电影在线| 欧美一级大片在线免费观看| 久久躁狠狠躁夜夜爽| 中文字幕精品www乱入免费视频| 国产亚洲一区二区在线| 欧洲一区二区视频| 久久免费精品日本久久中文字幕| 国产欧美欧洲在线观看| 国产精品久久久亚洲| 亚洲专区国产精品| 亚洲精品www久久久久久广东| 欧美激情一区二区三区高清视频| 中文字幕日韩欧美在线视频| 精品久久香蕉国产线看观看gif| 欧美激情精品久久久久久免费印度| 欧美一区二区三区免费观看| 自拍偷拍亚洲区| 黑人精品xxx一区| 中文字幕精品www乱入免费视频| 亚洲乱码av中文一区二区| 在线看日韩欧美| 国产精品99久久久久久人| 国产精品久久婷婷六月丁香| 欧美日韩中文字幕综合视频| 国内精品模特av私拍在线观看| 欧美成人午夜影院| 精品国产网站地址| 亚洲天堂av综合网| 精品人伦一区二区三区蜜桃网站| zzjj国产精品一区二区| 精品国产欧美一区二区三区成人| 亚洲区免费影片| 欧美性xxxx极品高清hd直播| 亚洲男子天堂网| 亚洲久久久久久久久久久| 福利一区福利二区微拍刺激| 亚洲无亚洲人成网站77777| 日韩av理论片| 日韩第一页在线| 亚洲国产天堂久久综合| 亚洲国产婷婷香蕉久久久久久| 亚洲国产99精品国自产| 亚洲在线观看视频网站| 久久成人精品视频| 全球成人中文在线| 欧美精品九九久久| 亚洲国产欧美精品| 中文字幕欧美视频在线| 国产在线98福利播放视频| 在线观看欧美视频| 一本大道久久加勒比香蕉| 亚洲免费人成在线视频观看| xxav国产精品美女主播| 91美女高潮出水| 亚洲国产精品成人va在线观看| 久久精品国产一区| 国产热re99久久6国产精品| 91久久精品日日躁夜夜躁国产| 久久精品久久久久久国产 免费| 91av在线播放| 91影视免费在线观看|