Java 編譯打包命令

來源:互聯網
上載者:User

標籤:搜尋   ict   標記   sea   isp   獨立   targe   class   包括   

  • 背景
  • 編譯
  • 打包
  • 解壓
  • 運行
  • 參考
背景

我們有的時候總是要使用將自己寫的工程編譯成 class 檔案,同時打包成 jar,雖然有各種工具可以協助我們,但是畢竟掌握使用 java 本來的命令去做這些更靈活

編譯

比如我要編譯包名為 com.demo,全稱為 com.demo.Main 的這個類,同時將產生的檔案指定到目前的目錄下的 bin 檔案夾下,那麼在麼做呢?

Main.java 內容:

1 package com.demo;2 public class Main{3 4 public static void main(String[] argvs){5   System.out.println("-------****Hello world!***-------");6 }7 8 }

由於編譯的類是有包名的,所以必須在工作目錄下建立包名對應的檔案夾,將源碼放在對應檔案夾下,如果不這麼做會找不到這個類,然後執行 javac 命令

1 mkdir bin #建立輸出目錄2 javac com/demo/Main.java -d bin #會在 bin 檔案夾下產生 com/demo/Main.class 檔案 
打包

打包 bin 檔案夾下所有資源到 jar 包

1 touch bin/property.pro 2 jar -cvfm main.jar mymanifest -C bin .#這裡 mymanifest 對應 m 選項,會將 mymanifset 合并到 jar 中的 META-INF/MANIFEST.MF,也就是跟新清單設定檔了,-C 後面指定要打包的目錄 (編譯的時候沒有這麼方便) 注意目錄後面的 . 代表所有檔案3 #最終會在當前工作目錄下產生一個 main.jar 包檔案,裡麵包括 bin 下的所有檔案

更新 jar 包內容

1 mkdir res2 touch res/map.property3 jar -uvf main.jar res/map.property #此時如果解壓 jar 包,會發現產生了 res 目錄,同時目錄下有 map.property 檔案,當然入股之前有那麼這個檔案會被更新4 #jar -uvfm main.jar manifest 如果要跟新資訊清單檔要用 m 選項
解壓
jar -xvf main.jar #會在目前的目錄下解壓 main.jar 包,注意不能指定解壓路徑
運行
1 java -jar main.jar #java -classpath main.jar com.demo.Main 2 #輸出 3 -------****Hello world!***-------

 

參考
 1 javac 2  3 用法: javac <options> <source files> 4 其中, 可能的選項包括: 5   -g                         產生所有調試資訊 6   -g:none                    不產生任何調試資訊 7   -g:{lines,vars,source}     只產生某些調試資訊 8   -nowarn                    不產生任何警告 9   -verbose                   輸出有關編譯器正在執行的操作的訊息10   -deprecation               輸出使用已淘汰的 API 的源位置11   -classpath <路徑>            指定尋找使用者類檔案和注釋處理常式的位置12   -cp <路徑>                   指定尋找使用者類檔案和注釋處理常式的位置13   -sourcepath <路徑>           指定尋找輸入源檔案的位置14   -bootclasspath <路徑>        覆蓋引導類檔案的位置15   -extdirs <目錄>              覆蓋所安裝擴充的位置16   -endorseddirs <目錄>         覆蓋簽名的標準路徑的位置17   -proc:{none,only}          控制是否執行注釋處理和/或編譯。18   -processor <class1>[,<class2>,<class3>...] 要啟動並執行注釋處理常式的名稱; 繞過預設的搜尋進程19   -processorpath <路徑>        指定尋找注釋處理常式的位置20   -parameters                產生中繼資料以用於方法參數的反射21   -d <目錄>                    指定放置產生的類檔案的位置22   -s <目錄>                    指定放置產生的源檔案的位置23   -h <目錄>                    指定放置產生的本機標題檔案的位置24   -implicit:{none,class}     指定是否為隱式引用檔案產生類檔案25   -encoding <編碼>             指定源檔案使用的字元編碼26   -source <發行版>              提供與指定發行版的源相容性27   -target <發行版>              產生特定 VM 版本的類檔案28   -profile <設定檔>            請確保使用的 API 在指定的設定檔中可用29   -version                   版本資訊30   -help                      輸出標準選項的提要31   -A關鍵字[=值]                  傳遞給注釋處理常式的選項32   -X                         輸出非標準選項的提要33   -J<標記>                     直接將 <標記> 傳遞給運行時系統34   -Werror                    出現警告時終止編譯35   @<檔案名稱>                     從檔案讀取選項和檔案名稱
javac
 1 jar 2  3 用法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ... 4 選項: 5     -c  建立新檔案 6     -t  列出檔案目錄 7     -x  從檔案中提取指定的 (或所有) 檔案 8     -u  更新現有檔案 9     -v  在標準輸出中產生詳細輸出10     -f  指定檔案檔案名稱11     -m  包含指定資訊清單檔中的清單資訊12     -n  建立新檔案後執行 Pack200 正常化13     -e  為捆綁到可執行 jar 檔案的獨立應用程式14         指定應用程式進入點15     -0  僅儲存; 不使用任何 ZIP 壓縮16     -P  保留檔案名稱中的前置 ‘/‘ (絕對路徑) 和 ".." (父目錄) 組件17     -M  不建立條目的資訊清單檔18     -i  為指定的 jar 檔案產生索引資訊19     -C  更改為指定的目錄並包含以下檔案20 如果任何檔案為目錄, 則對其進行遞迴處理。21 資訊清單檔名, 檔案檔案名稱和進入點名稱的指定順序22 與 ‘m‘, ‘f‘ 和 ‘e‘ 標記的指定順序相同。23 24 樣本 1: 將兩個類檔案歸檔到一個名為 classes.jar 的檔案中: 25        jar cvf classes.jar Foo.class Bar.class 26 樣本 2: 使用現有的資訊清單檔 ‘mymanifest‘ 並27            將 foo/ 目錄中的所有檔案歸檔到 ‘classes.jar‘ 中: 28        jar cvfm classes.jar mymanifest -C foo/ .
jar
 1 java 2  3 用法: java [-options] class [args...] 4            (執行類) 5    或  java [-options] -jar jarfile [args...] 6            (執行 jar 檔案) 7 其中選項包括: 8     -d32      使用 32 位元據模型 (如果可用) 9     -d64      使用 64 位元據模型 (如果可用)10     -server      選擇 "server" VM11                   預設 VM 是 server,12                   因為您是在伺服器類電腦上運行。13 14 15     -cp <目錄和 zip/jar 檔案的類搜尋路徑>16     -classpath <目錄和 zip/jar 檔案的類搜尋路徑>17                   用 : 分隔的目錄, JAR 檔案18                   和 ZIP 檔案列表, 用於搜尋類檔案。19     -D<名稱>=<值>20                   設定系統屬性21     -verbose:[class|gc|jni]22                   啟用詳細輸出23     -version      輸出產品版本並退出24     -version:<值>25                   警告: 此功能已淘汰, 將在26                   未來發行版中刪除。27                   需要指定的版本才能運行28     -showversion  輸出產品版本並繼續29     -jre-restrict-search | -no-jre-restrict-search30                   警告: 此功能已淘汰, 將在31                   未來發行版中刪除。32                   在版本搜尋中包括/排除使用者專用 JRE33     -? -help      輸出此協助訊息34     -X            輸出非標準選項的協助35     -ea[:<packagename>...|:<classname>]36     -enableassertions[:<packagename>...|:<classname>]37                   按指定的粒度啟用斷言38     -da[:<packagename>...|:<classname>]39     -disableassertions[:<packagename>...|:<classname>]40                   禁用具有指定粒度的斷言41     -esa | -enablesystemassertions42                   啟用系統斷言43     -dsa | -disablesystemassertions44                   禁用系統斷言45     -agentlib:<libname>[=<選項>]46                   載入本機代理庫 <libname>, 例如 -agentlib:hprof47                   另請參閱 -agentlib:jdwp=help 和 -agentlib:hprof=help48     -agentpath:<pathname>[=<選項>]49                   按完整路徑名載入本機代理庫50     -javaagent:<jarpath>[=<選項>]51                   載入 Java 程式設計語言代理, 請參閱 java.lang.instrument52     -splash:<imagepath>53                   使用指定的映像顯示啟動螢幕54 有關詳細資料, 請參閱 http://www.oracle.com/technetwork/java/javase/documentation/index.html。
java

 

Java 編譯打包命令

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.