在cmd 中输入 jar 回打印出 jar 命令的相关参数,
常用的几个参数如下 :
-c : 创建.jar文件
-v : 输出打包过程中的详细信息
-f : 指定目标 jar文件的名称
-m: 指定自定义的 MANIFEST.MF 清单文件(自己可以在MANIFEST.MF中添加程序入口主类)
(-m 参数,如果打成的jar包中没有程序入口类,可以省略该参数)
1.编译项目,将java文件统统编译为 class文件
2.打包class文件
3.如果是可以运行的jar包,则 可以通过执行 java -jar xxx.jar 命令 来验证是否正确。
下面两种情景都是以
可以运行的jar包 (包含main主类的jar包)
为例,进行介绍。
此处的
普通目录结构
表示 : 没有 包结构的项目
javac01
| -- src : 源码目录
| -- Javac01.java
| -- target : 编译后的文件位置
| -- Javac01.class
》 Javac01.java
public class Javac01{
public static void main(String[] args) {
System.out.println("Hello Javac01");
System.out.println("你好 Javac01");
}
}
打开cmd命令行创建,进入到 javac01项目中,执行编译命令
javac src\Javac01.java -d target -encoding utf-8
【如果有对此命令不熟悉的小伙伴,可以参考这篇博客 javac编译java项目】
此处是为了指定jar包的入口程序,如果没有入口程序,只是单纯的一个工具jar包,
可以跳过此步骤,使用默认生成的即可。
Main-Class: Javac01 : 表示此jar包直接运行的入口类。
》 注意:此文件的最后一行一定是一个空行
。
》 注意:此文件的每一行的:
后面都要有一个空格
。
Manifest-Version: 1.0
Created-By: 1.8.0_261 (Oracle Corporation)
Main-Class: Javac01
进入到存放 class文件的target目录中,执行打包命令
jar -cvfm javac01.jar MANIFEST.MF *.class
*
表示把当前目录下的所有 class 文件都打入jar包
运行命令 :
java -jar jar包的名称
此处的
正常的java项目
表示 : 包含正常 包结构的java项目
javac02
| -- src : 源码目录
| -- com
| -- northcastle
| -- Javac02A.java
| -- Javac02B.java
| -- utile
| -- JavaUtile.java
| -- target : 编译后的文件位置
| -- com
| -- northcastle
| -- Javac02A.class
| -- Javac02B.class
》 Javac02A.java
package com.northcastle; // 指定包名
public class Javac02A{
public void sayHello(){
System.out.println("Hello Javac02A");
System.out.println("你好 Javac02A");
}
}
》Javac02B.java
package com.northcastle; // 指定包名
import com.northcastle.Javac02A; // 引入依赖的类
public class Javac02B{
public static void main(String[] args) {
// 创建Javac02A对象,并调用方法
Javac02A javac02A = new Javac02A();
javac02A.sayHello();
}
}
》JavaUtile.java
package com.utile; // 指定包名
public class JavaUtile{
public static void isEmpty(){
System.out.println("恭喜你调用成功了这个isEmpty工具方法!");
}
}
》 javaList.txt : 列出了要被编译的java源码文件
src\com\northcastle\Javac02A.java
src\com\northcastle\Javac02B.java
src\com\utile\JavaUtile.java
打开cmd命令行创建,进入到 javac01项目中,执行编译命令
javac @javaList.txt -d target -encoding utf-8
【如果有对此命令不熟悉的小伙伴,可以参考这篇博客 javac编译java项目】
此处是为了指定jar包的入口程序,如果没有入口程序,只是单纯的一个工具jar包,
可以跳过此步骤,使用默认生成的即可。
Main-Class: com.northcastle.Javac02B : 表示此jar包直接运行的入口类。
》 注意:此文件的最后一行一定是一个空行
。
》 注意:此文件的每一行的:
后面都要有一个空格
。
Manifest-Version: 1.0
Created-By: 1.8.0_261 (Oracle Corporation)
Main-Class: com.northcastle.Javac02B
进入到存放 class文件的target目录中,执行打包命令
jar -cvfm javac02.jar MANIFEST.MF com
com
表示把com目录
下的所有 class 文件都打入jar包
运行命令 :
java -jar jar包的名称
Congratulations!
You are one step closer to success!