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. Java学习之路(九):Map集合

    Map集合概述和特点 Map是属于java.util的一个接口Map<k,v> k:映射所维护的键的类型 v:映射值的类型 Map是将键映射到值的对象.一个映射不能包含重复的键:每个键最多 ...

  2. 【Java并发编程】:深入Java内存模型—内存操作规则总结

    主内存与工作内存 java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节.此处的变量主要是指共享变量,存在竞争问题的变量.Java内存模 ...

  3. 【数组】Search for a Range

    题目: Given a sorted array of integers, find the starting and ending position of a given target value. ...

  4. C#中null值属于什么变量类型

    今天学习发现有段代码的输出结果有些理解不了,如图1,输出的结果全部为 false: 图1 后来和同事讨论研究了一下才明白,原来是这样:↓ class Program { static void Mai ...

  5. 关于offsetTop的误解

    一直以为offset是子元素相对于父元素的距离,后来用了才知道是一个坑,只存在于定位元素中 在做li的搜索的定位的时候,为了得到li相对于ul的距离,本来也可以用li的高度相乘,但是用了offsetT ...

  6. 机器学习--聚类系列--K-means算法

    一.聚类 聚类分析是非监督学习的很重要的领域.所谓非监督学习,就是数据是没有类别标记的,算法要从对原始数据的探索中提取出一定的规律.而聚类分析就是试图将数据集中的样本划分为若干个不相交的子集,每个子集 ...

  7. vue 分享知识点

    vue 分享模块清单 1.Vue 2.0之Vue实例和生命周期 2.vue 2.0之自定义指令 3.vue 2.0之观察者模式实现简单异步无限滚动 4.从JavaScript属性描述器剖析Vue.js ...

  8. 剑指offer65:矩阵中的路径

    题目描述: 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子.如果一条路径经过了矩阵 ...

  9. ABP实战--集成Ladp/AD认证

    参照Hunter的ABP-Zero模块中用户管理部分. 由于我们公司的各系统基本都是AD帐号登录的,所以我们需扩展ABP的AuthenticationSource. 添加MyLdapAuthentic ...

  10. Golang 并发Groutine实例解读(一)

    Go语言的并发和并行 不知道你有没有注意到一个现象,还是这段代码,如果我跑在两个goroutines里面的话: var quit chan int = make(chan int) func loop ...