1. 程式人生 > >使用javac編譯工程

使用javac編譯工程

www -c bubuko gpe source .com ora pat IT

今天看到有一個利用原始的javac編譯整個Java項目的專欄,然後就動手對使用javac來編譯java工程進行了一下研究,一直都是使用IDE來搞java,對這些編譯工程的細節還不是很了解,遂紀錄之。

工程目錄結構如下:
技術分享圖片

App.java的內容如下:

package  com.oops;

public  class  App  {
    public  static  void main(String[] args)  {
        Orz  orz = new  Orz();
        orz.sayOops();
        orz.sayOrz();
    }
}

Orz.java的內容如下:

package  com.oops;

import  org.apache.logging.log4j.LogManager;
import  org.apache.logging.log4j.Logger;

public  class  Orz  {
    Logger LOGGER = LogManager.getLogger();

    public  void sayOrz()  {
        LOGGER.info("orz...");
    }

    public  void sayOops()  {
        LOGGER.info("orz..."
); } }

這個項目引入了兩個外部的jar包。
構建如下:

  1. 首先創建一個目錄用於存放生成的class文件。
  2. 進入工程目錄,然後運行編譯命令,其中-d 參數指定編譯結果的輸出目錄,-cp參數用於指定搜索引入外部包的路徑,最後是需要編譯的文件。

    javac -d classes -cp lib\core.jar;lib\api.jar src\com\oops\*.java
  3. 進入classes目錄,運行生成的class文件。註意,運行class文件時需要註意輸入class的全限定名。如我們這裏生成了一個叫做App.class的類文件,由於我們的App.java是在com.oops包下面的,所以運行的時候我們應該運行com.oops.App

    ,同時還需要指定classpath。

    java -cp .;..\lib\api.jar;..\lib\core.jar com.oops.App
  4. 在工程目錄下面新建一個MANIFEST.MF文件。指定入口類,classpath。

    Manifest-Version: 1.0  
    Main-Class: com.oops.App
    Class-Path: lib/api.jar lib/core.jar
  5. 進入classes目錄,打包jar文件。

    jar -cvfm demo.jar ..\MANIFEST.MF *
  6. 在classes目錄下面,運行jar包。

     java -jar demo.jar
  7. 接下來需要學習一下使用ant和maven等構建工具了。

參考

JAR打包的誤區:第三方包的嵌套打包
利用原始的javac編譯整個Java項目
javac
JAVAC 命令詳解

使用javac編譯工程