一、生成单个文件的jar包
需要文件:一个hello.class,一个MANIFEST.MF文件
- 生成hello.class
首先写下,如下代码:
package ceshi;
public class Hello {
public static void main(String[] args) throws Exception {
Hello hello = new Hello();
hello.sayHello("gfsafafasdffffffffsdfasdfasdfasdfword. bingo!");
}
public void sayHello(String word) {
System.out.println("hello, " + word);
}
}
通过javac指令得到hello.class 文件
2. 新建MANIFEST.MF文件,写入以下内容
Manifest-Version: 1.0
Main-Class: ceshi.Hello
注意:这里的的Main-Class参数必须是ceshi.Hello,因为java文件中package是ceshi,前后必须统一,不然对不上。
- 将得到的class文件放入ceshi文件夹,文件结构如下
- 在当前文件夹下,运行cmd窗口,执行指令:jar cvfm test.jar MANIFEST.MF ceshi 执行后,得到test.jar文件,如下
- 继续在cmd窗口,运行 java -jar test.jar
- 6. 大功告成!
PS1:在jar命令中的参数解释:cvfm
其中c代表:创建新的JAR文件包
v代表:生成详细报告并打印到标准输出
f代表:指定jar文件名
m代表:指定需要包含的MANIFEST文件清单
PS2:jar文件其实就是多了META-INF的zip文件,因此,把test.jar文件扩展名改为zip,就可以打开,查看里面的文件结构。有一点java -jar test.zip,也可以运行成功,不过有时候不灵,而且你直接把ceshi文件夹和META-INF文件夹不通过jar命令,而是通过WinZip直接压缩成zip文件,也可以通过java -jar运行,我本地是可以的,不过有时候运行失败,具体还没搞清楚,大家也可以自行研究一下。
二、生成项目jar包(By IDEA)
项目jar包,我是通过IDEA生成的,具体操作如下
- 点击项目名,右键,选择:Open Module Setting
- 依次选择Artifact–>JAR–>From module with dependecies
- 在弹出的窗口选择项目和运行的主类:
- Directory for META-INF选项 有的博客说需要改一下,不然会报错,但我没改,运行也没错,所以,这个大家自行看吧,后面如果运行错了,就把这里改一下。
- 点击确定,出现如下界面继续点击ok。回到编辑主界面。
- 点击Build–>Build Artifacts
- 选择刚才生成的Artifact,点击build。
- 去第4步中的output director中找生成的jar文件
- 当前目录下运行java -jar lintonUtils.jar,成功输出