jar 命令
jar 是一个jar.exe可执行命令,即可以生成jar文件,也可以生成war文件
 
使用示例:jar -cvf ../xxx.jar * 
-c   create,创建新的归档文档
-v   view,在标准输出中生成详细输出
-f    file,指定归档文件名
 
xxx.jar 是指定的jar文件名 
* 把当前目录下所有的文件及其子目录下所有的文件打进jar包 
 
另外,如果要创建可执行的jar文件,可以使用 -m 来指定MANIFEST.MF文件

打 jar 包
1、在cmd窗口切换到最上层包目录的父目录
  比如,在桌面有一个项目文件夹Hello,打开它,看到最上层包名com,就在这个地址栏输入cmd
2、打jar包输入:
    jar -cvf ../xxx.jar * (不输入v也可以)
   打war包输入:
    jar cvf ../xxx.war *
3、在相应目录下可以看到jar或war文件已经生成。
 
从中可以发现 war 和 jar 包的区别仅仅是文件名不同而已。

运行 jar 包
jar包打好后,设置classPath的为xxx\yyy.jar,然后在命令行的任何路径都可以执行java 命令运行它,前提条件是jar 包里有main方法。
例如java com.xxx.Zzz。打包和不打包一样,访问某个class 文件的方法都一样。
这样运行的方式,前提是必须先把jar文件的保存路径设置为ClassPath。下面介绍一种不需要设置ClassPath,打包后可直接运行的打包方式。

创建可执行的jar文件
项目链接:https://files.cnblogs.com/files/Mike_Chang/example.rar 

1、在IDE里打包一个 jar 项目

2、到 target 目录下复制出jar包,可以把这个 jar 包的名字修改

3、解压,打开 META-INF/MANIFEST.MF(如果没有,自己创建一个META-INF文件夹,创建一个MANIFEST.MF的文件),在最后一行添加内容如下:

  Main-Class: com.test.HelloWorld(类的全路径名,后面不要以.class结尾)

注意:

  (1)Class:后面,也就是冒号后面要添加一个空格,否则会打包时会出现异常 Java.io.IOException: invalid header field

  (2)行末要添加一个回车,否则我们输入的这一行不能打包进去

4、在cmd窗口切换到项目目录,执行命令:

  jar cvfm ../Hello.jar META-INF/MANIFEST.MF *

  f 对应 Hello.jar,Hello.jar 可以自定义名称

  m 对应 META-INF/MANIFEST.MF

  * 表示打包当前目录里所有的文件,及子目录里的文件

5、在当前目录执行命令运行:

  java -jar Hello.jar


批处理文件运行

上面两种方式都是在命令行方式运行jar文件,还可以使用批处理文件的方式运行。

批处理文件实际上就是把在命令行输入的命令提前写到一个文件里,运行时双击这个批处理文件就可以执行了。

批处理文件名以.bat结尾

内容示例如下:

@echo off
cd/d %~dp0
java -jar Hello.jar
echo "OK"
pause

第一行和最后一行是固定格式,作用是——双击批处理文件后,弹出的命令行窗口不自动关闭,等我们按任意键后才关闭;

第二行,是切换为当前目录,%~dp0 代表当前目录

第三行,是标准输出字符串“OK"。

 

使用jar命令打jar/war包、创建可执行jar包、运行jar包、及批处理脚本编写的更多相关文章

  1. SpringBoot打war包并部署到外部tomcat运行(jar工程改造为正war工程)

    如果你的SpringBoot工程是一个jar工程,而想把它改造成war工程,并打成war包放到外部的tomcat下运行,该怎么修改配置呢?这里以Maven工程为例进行介绍. (1)将pom.xml中的 ...

  2. Linux下打包压缩war、解压war包和jar命令

    情景:把project_a文件夹下的文件打包成project.war 1. 打包 jar -cvf project.war /project_a 说明: -c 创建war包 -v 显示过程信息 -f ...

  3. 【转】学习jar命令 创建和解压jar文件包

    java编程中每天都用不少jar文件,项目开发中不停地导包,在忙完了一天的工作,放下那些复杂的业务实现,不仅想问这些jar包怎么生成的,jar包有哪些独特的地方等等. 原来这些经常见到的jar包是ja ...

  4. [转] - JAR文件包及jar命令详解 ( MANIFEST.MF的用法 )

    常常在网上看到有人询问:如何把 java 程序编译成 .exe 文件.通常回答只有两种,一种是制作一个可执行的 JAR 文件包,然后就可以像. chm 文档一样双击运行了:而另一种是使用 JET 来进 ...

  5. Java jar命令 常见用法

    一.jar命令作用: 进行打包 -- 把多个文件打包成一个压缩包 -- 这个压缩包和Winzip的压缩格式是一样的. 区别在于jar压缩的文件默认多一个META-INF的文件夹,该文件夹下包含一个Ma ...

  6. 利用jar命令打包和解压

    常常在网上看到有人询问:如何把 java 程序编译成 .exe 文件.通常回答只有两种,一种是制作一个可执行的 JAR 文件包,然后就可以像.chm 文档一样双击运行了:而另一种是使用 JET 来进行 ...

  7. java之jar命令详解

    1. JAR 文件包 JAR 文件就是 Java Archive File,顾名思意,它的应用是与 Java 息息相关的,是 Java 的一种文档格式.JAR 文件非常类似 ZIP 文件——准确的说, ...

  8. jar 命令详解

    jar 是随 JDK 安装的,在 JDK 安装目录下的 bin 目录中,Windows 下文件名为 jar.exe,Linux 下文件名为 jar.它的运行需要用到 JDK 安装目录下 lib 目录中 ...

  9. JAR命令使用

    jar 命令详解 jar 是随 JDK 安装的,在 JDK 安装目录下的 bin 目录中,Windows 下文件名为 jar.exe,Linux 下文件名为 jar.它的运行需要用到 JDK 安装目录 ...

随机推荐

  1. 【Git】学习记录

    配置git git config --global user.name "用户名或者用户ID" git config --global user.email "邮箱&qu ...

  2. Redis-cli命令总结

    连接操作相关的命令 默认直接连接  远程连接-h 192.168.1.20 -p 6379 ping:测试连接是否存活如果正常会返回pong echo:打印 select:切换到指定的数据库,数据库索 ...

  3. 【Java并发编程】:线程挂起、恢复与终止

    挂起和恢复线程     Thread 的API中包含两个被淘汰的方法,它们用于临时挂起和重启某个线程,这些方法已经被淘汰,因为它们是不安全的,不稳定的.如果在不合适的时候挂起线程(比如,锁定共享资源时 ...

  4. 【Java并发编程】:线程中断

    使用interrupt()中断线程 当一个线程运行时,另一个线程可以调用对应的Thread对象的interrupt()方法来中断它,该方法只是在目标线程中设置一个标志,表示它已经被中断,并立即返回.这 ...

  5. sql返回行id

    1.sql语句中 insert into tableName() output inserted.id values() 2 .存储过程中 ALTER PROCEDURE dbo.getBuyMedi ...

  6. 配置alibaba的yum 源

    1, 进入yum源目录 cd /etc/yum.repos.d 2, 备份系统yum配置文件 sudo mv CentOS-Base.repo CentOS-Base.repo.bak 3, 下载al ...

  7. IDEA在当前类中查找方法快捷键--转

    https://blog.csdn.net/weixin_40739833/article/details/81298472 IDEA工具是当前类中查找一个方法快捷键: Ctrl + F12  例如在 ...

  8. 软件级负载均衡器(LVS/HAProxy/Nginx)的特点简介和对比

    本文出自 “抚琴煮酒” 博客,出处http://andrewyu.blog.51cto.com/1604432/697466   现在网站发展的趋势对网络负载均衡的使用是随着网站规模的提升根据不同的阶 ...

  9. unity简单动画实现

    1:创建一个Sprite Render (player)的动画对象并添加脚本Player,点击主菜单“Window(视窗)→Animation(动画窗口)”Animation面板(选中需要动画的对象) ...

  10. [javaSE] 并发编程(线程间通信)

    新建一个资源类Resource 定义成员变量String name 定义成员变量int age 新建一个输入类Input,实现Runnable接口 定义一个构造方法Input(),传入参数:Resou ...