如何手动打包jar文件
2022-12-10 本文已影响0人
刘月林Yuelin_MELB
确保文件在一个包下
实例, 在同一个包src下有下面两个类 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 参数指定生成的 class文件的位置
.jar文件生成
准备一个 mainfest.txt 文件,需要以下内容:
Main-Class: Test1
- Test1 即包含 main 方法的那个类
- Test1 和冒号之前一定要有空格, Test1 后面一定要有换行
- mainfest.txt 最好和 Test1 这个 class 文件在同一目录下
否则!接下来运行 .jar 文件的时候很容易出现这样的报错: Can't execute jar- file: "no main manifest attribute"
然后执行命令行:
jar -cvmf mainfest.txt Test.jar *.class
切记 m f 指令顺序需和后面清单文件名和归档文件名的顺序保持一致
对于参数不清晰的可以使用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 文件内容
- jar -xf xxx.jar 可以解压 jar 文件
最后运行.jar文件: java -jar Test.jar