java文件生成jar包
创建项目文件夹demo1
,demo1
结构如下图:

在Hello.java
中编写代码: 1
2
3
4
5
6
7package com.priv.djc.learn;
public class Hello {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
执行以下命令生成jar包
1 |
|
命令解读:
java的包名要和目录名匹配,所以我的目录有com\priv\djc\learn
1
javac -d bin src\com\priv\djc\learn\Hello.java
javac将java文件编译为.class,一个类生成一个class,-d指定生成位置,默认是和代码文件在同一目录。javac编译好的文件放在bin\com\priv\djc\learn\Hello.class
。javac会自动在bin下创建需要的子目录。
1
jar -cvfe new.jar com.priv.djc.learn.Hello -C bin com\priv\djc\learn\Hello.class
jar命令将.class文件打包为jar文件。-c
表示创建jar包,-v
表示输出详细信息,-f
表示后边指定了输出的jar包的名字,-e
表示后边有入口类的名字。-C
指定一个文件夹,进入这个文件夹再打包。
new.jar是产生的jar包,com.priv.djc.learn.Hello是主类名字,com.class是要打包的class文件。
jar命令有些坑:
cvfe这些指令必须写在前面,但是-C除外。然后后面跟着你需要的文件名、类名就行,顺序无所谓,会自动根据后缀名识别。千万不能是java -cv -f new.jar -e com.priv.djc.learn.Hello.....,会把你这些选项都识别成文件,报错。
-C选项是必须的,因为要把文件夹按结构打包到jar包里,如果你不进入bin再打包,就会把bin也打包进去,但是显然类名和包名是没有bin的
完事后会在demo1下产生new.jar,执行java -jar new.jar,控制台输出Hello World