使用javac編譯工程
阿新 • • 發佈:2018-03-10
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包。
構建如下:
- 首先創建一個目錄用於存放生成的class文件。
進入工程目錄,然後運行編譯命令,其中-d 參數指定編譯結果的輸出目錄,-cp參數用於指定搜索引入外部包的路徑,最後是需要編譯的文件。
javac -d classes -cp lib\core.jar;lib\api.jar src\com\oops\*.java
進入classes目錄,運行生成的class文件。註意,運行class文件時需要註意輸入class的全限定名。如我們這裏生成了一個叫做App.class的類文件,由於我們的
App.java
是在com.oops
包下面的,所以運行的時候我們應該運行com.oops.App
java -cp .;..\lib\api.jar;..\lib\core.jar com.oops.App
在工程目錄下面新建一個MANIFEST.MF文件。指定入口類,classpath。
Manifest-Version: 1.0 Main-Class: com.oops.App Class-Path: lib/api.jar lib/core.jar
進入classes目錄,打包jar文件。
jar -cvfm demo.jar ..\MANIFEST.MF *
在classes目錄下面,運行jar包。
java -jar demo.jar
接下來需要學習一下使用ant和maven等構建工具了。
參考
JAR打包的誤區:第三方包的嵌套打包
利用原始的javac編譯整個Java項目
javac
JAVAC 命令詳解
使用javac編譯工程