確保文件在一個(gè)包下
實(shí)例, 在同一個(gè)包src下有下面兩個(gè)類(lèi) Test1 和 Test2
- Test1
//Test1.java: A simple code to test jar operation.
public class Test1{
private int i;
public Test1(int i){
this.i = i;
}
public void f(){
System.out.printf("Test_jar: i is %d !\n",this.i);
}
public static void main(String[] args) {
Test1 myTest = new Test1(1);
Test2 myTest2 = new Test2(2);
myTest.f();
myTest2.f();
}
}
- Test2
//Test2.java: A simple code to test jar operation.
public class Test2{
private int i;
public Test2(int i){
this.i = i;
}
public void f(){
System.out.printf("Test2: i is %d !\n",this.i);
}
}
為了保持代碼的整潔侨赡,直接使用 javac *.java -d bin
, -d 參數(shù)指定生成的 class文件的位置
.jar文件生成
準(zhǔn)備一個(gè) mainfest.txt 文件,需要以下內(nèi)容:
Main-Class: Test1
- Test1 即包含 main 方法的那個(gè)類(lèi)
- Test1 和冒號(hào)之前一定要有空格痘番, Test1 后面一定要有換行
- mainfest.txt 最好和 Test1 這個(gè) class 文件在同一目錄下
否則汛闸!接下來(lái)運(yùn)行 .jar 文件的時(shí)候很容易出現(xiàn)這樣的報(bào)錯(cuò): Can't execute jar- file: "no main manifest attribute"
然后執(zhí)行命令行:
jar -cvmf mainfest.txt Test.jar *.class
切記 m f 指令順序需和后面清單文件名和歸檔文件名的順序保持一致
對(duì)于參數(shù)不清晰的可以使用jar --help
查看幫助文檔
Operation & Modifiers | Meaning |
---|---|
-c | Create the archive |
-v | Generate verbose output on standard output |
-m | Include the mainfest information from the given mainfest file |
-f | The archive file name. When omitted, either stdin or stdout is used based on the operation |
- jar -tf xxx.jar 可以查看 jar 文件內(nèi)容
- jar -xf xxx.jar 可以解壓 jar 文件
最后運(yùn)行.jar文件: java -jar Test.jar