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. IIS 8 配置错误

    1) ProtocolException: The remote server returned an unexpected response: (405) Method Not Allowed Th ...

  2. Angularjs集成第三方js插件之Uploadify

    有时候需要用一些第三方插件,比如datepicker,slider,或者tree等.以前的做法是直接通过jquery取得某个元素,然后调用某个方法即可.但在angularjs中,不能直接这么写,必须写 ...

  3. Apache解析和绑定域名

    转载+修改 如果你想让你上线项目的域名解析的是你本地的IP,该怎么做呢?难道要一个个的改配置文件吗? 例 :域名为  aaa.com 端口默认为80. 我试图修改为8080端口,但是出错了 1.本地h ...

  4. ActiveMQ发布-订阅消息模式

    一.订阅杂志我们很多人都订过杂志,其过程很简单.只要告诉邮局我们所要订的杂志名.投递的地址,付了钱就OK.出版社定期会将出版的杂志交给邮局,邮局会根据订阅的列表,将杂志送达消费者手中.这样我们就可以看 ...

  5. R语言-RStudio快捷键总结

    一.控制台 功能  Windows & Linux   Mac 移动鼠标到控制台 Ctrl+2 Ctrl+2 移动到鼠标命令编辑 Ctrl+1 Ctrl+1 控制台清屏 Ctrl+L Comm ...

  6. C#循环读取文件流,按行读取

    public Dictionary<string,string> GetSourceDisksElements(String section) { section = "[&qu ...

  7. 自学C Primer Plus时还没想明白的问题

    2016年11月24日 1. 计算机中两个浮点数怎样进行加法运算.2. 为什么计算机在计算时存在损失精度的可能3. 无符号数和有符号数的运算是怎样的4. printf中使用格式控制符的截断问题,比如% ...

  8. Cookie的格式及组成、页面间传参实例

    做项目需要页面间参数传递,搜索了一下网上的回复,发现可以用cookie解决,借此学习cookie的格式及组成: Cookie由变量名和值组成,类似Javascript变量.其属性里既有标准的Cooki ...

  9. Android源码博客目录

    每次都找不到,干脆每个部分都开个目录,方便找 0. 杂项 一些Android的博客,没事翻翻 1. 构建相关 linux和Android的Makefile和android.mk android 目录下 ...

  10. Cmake编写JNI

    调用两个库 CMakeLists.txt //把那种大段的注释去掉了 cmake_minimum_required(VERSION ) add_library( # Sets the name of ...