java 命令行進行代碼編譯

java 命令行進行代碼編譯

  • 20180615 lambo init

測試目錄結構

  • root/src/com/Main.java
  • root/conf/aa.conf
  • root/lib/aa.jar
  • root/classes

編譯 javac

  • 收集java文件路徑
  • javac編譯

windows 代碼

dir /b src\\*.java/s > srcList.txt
javac -encoding UTF-8 -cp .;/lib/aa.jar -d classes @srcList.txt

linux 代碼

find src -name *.java > srcList.txt
javac -encoding UTF-8 -cp .:/lib/aa.jar -d classes @srcList.txt

打成jar包

jar -cf xx.jar -C classes . -C conf .

打包成可執行包

ps -e參數能夠指定main-class, 注意com.Main位置,不可變。-e 取第一個class做爲main-class;java

jar -cfe xx.jar com.Main -C classes . -C conf .

命令幫助

javac命令

用法: javac <options> <source files>
其中, 可能的選項包括:
  -g                         生成全部調試信息
  -g:none                    不生成任何調試信息
  -g:{lines,vars,source}     只生成某些調試信息
  -nowarn                    不生成任何警告
  -verbose                   輸出有關編譯器正在執行的操做的消息
  -deprecation               輸出使用已過期的 API 的源位置
  -classpath <路徑>            指定查找用戶類文件和註釋處理程序的位置
  -cp <路徑>                   指定查找用戶類文件和註釋處理程序的位置
  -sourcepath <路徑>           指定查找輸入源文件的位置
  -bootclasspath <路徑>        覆蓋引導類文件的位置
  -extdirs <目錄>              覆蓋所安裝擴展的位置
  -endorseddirs <目錄>         覆蓋簽名的標準路徑的位置
  -proc:{none,only}          控制是否執行註釋處理和/或編譯。
  -processor <class1>[,<class2>,<class3>...] 要運行的註釋處理程序的名稱; 繞過默認的搜索進程
  -processorpath <路徑>        指定查找註釋處理程序的位置
  -parameters                生成元數據以用於方法參數的反射
  -d <目錄>                    指定放置生成的類文件的位置
  -s <目錄>                    指定放置生成的源文件的位置
  -h <目錄>                    指定放置生成的本機標頭文件的位置
  -implicit:{none,class}     指定是否爲隱式引用文件生成類文件
  -encoding <編碼>             指定源文件使用的字符編碼
  -source <發行版>              提供與指定發行版的源兼容性
  -target <發行版>              生成特定 VM 版本的類文件
  -profile <配置文件>            請確保使用的 API 在指定的配置文件中可用
  -version                   版本信息
  -help                      輸出標準選項的提要
  -A關鍵字[=值]                  傳遞給註釋處理程序的選項
  -X                         輸出非標準選項的提要
  -J<標記>                     直接將 <標記> 傳遞給運行時系統
  -Werror                    出現警告時終止編譯
  @<文件名>                     從文件讀取選項和文件名

jar 命令

用法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
選項:
    -c  建立新檔案
    -t  列出檔案目錄
    -x  從檔案中提取指定的 (或全部) 文件
    -u  更新現有檔案
    -v  在標準輸出中生成詳細輸出
    -f  指定檔案文件名
    -m  包含指定清單文件中的清單信息
    -n  建立新檔案後執行 Pack200 規範化
    -e  爲捆綁到可執行 jar 文件的獨立應用程序
        指定應用程序入口點
    -0  僅存儲; 不使用任何 ZIP 壓縮
    -P  保留文件名中的前導 '/' (絕對路徑) 和 ".." (父目錄) 組件
    -M  不建立條目的清單文件
    -i  爲指定的 jar 文件生成索引信息
    -C  更改成指定的目錄幷包含如下文件
若是任何文件爲目錄, 則對其進行遞歸處理。
清單文件名, 檔案文件名和入口點名稱的指定順序
與 'm', 'f' 和 'e' 標記的指定順序相同。

示例 1: 將兩個類文件歸檔到一個名爲 classes.jar 的檔案中: 
       jar cvf classes.jar Foo.class Bar.class 
示例 2: 使用現有的清單文件 'mymanifest' 並
           將 foo/ 目錄中的全部文件歸檔到 'classes.jar' 中: 
       jar cvfm classes.jar mymanifest -C foo/ .
相關文章
相關標籤/搜索