.bat文件和Jar包的生成及运行

1、Jar包简单介绍

  Jar包是Java中所特有的一种压缩文档,有点类似于zip包,区别在于Jar包中有一个META-INF\MANIFEST.MF文件(在生成Jar包的过程中会自动创建,具体的后面会进行讲解)。

  Jar包是由JDK安装目录\bin\jar.exe命令生成的,若已成功将其路径设置在系统环境变量中,就可以在CMD中直接使用jar.exe命令了,而它会调用lib\tool.jar工具包中的类。

2、Jar包常用命令

  Jar包生成命令格式:jar  {c t x u i }[ v f m n 0 M e ]  [-C 目录]  文件名...

  其中,{ctxu}这四个参数必须选则一个,[v f m n 0 M e ]是可选参数,-C指定后面文件所在的目录,文件名也是必须的(不然没有源文件,没有意义,可以同时压缩多个.class)。

  -c 创建一个jar包

  -t 显示jar中的内容列表

  -x 解压jar包

  -u 添加文件到jar包中

  -f 指定jar包的文件名

  -v生成详细的报造,并输出至标准设备

  -n 创建新档案后,执行Pack200规范化

  -m 指定MANIFEST.MF文件 (MANIFEST.MF文件中可以对jar包及其中的内容作一些设置)

  -0 产生jar包时不对其中的内容进行压缩处理

  -M 不产生所有文件的清单文件(MANIFEST.MF),这个参数与忽略掉-m参数的设置效果类似

  -i 为指定的jar文件创建索引文件

  -C 表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令

  在CMD中输入jar,回车,即会列出关于jar命令的详细信息。如下图:

3、Jar包生成准备

  之前提到过的MANIFEST.MF文件,在Jar包生成过程中由jar.exe命令自动创建(可以在CMD中敲入jar),默认的信息包括当前的Manifest版本与Java JDK版本。如下图:

 Manifest-Version: 1.0
Created-By: 1.8.0_25 (Oracle Corporation)

  有必要搞清楚的是,Jar包有两种类型:

  a) 生成后可以直接运行,当然,需借助java -jar命令;

  b) 被别的类导入工程并调用其方法,类似于Java JDK自带的Jar包;

  由于后者和Java自带类库中的那些Jar包用法相同,本篇文章介绍前者——可执行Jar包的制作与运行。注意,对于可执行Jar包,MANIFEST.MF文件的作用主要是指定主类文件名称(即包含main()方法的.java文件名)。这就需要在Jar生成之前先创建一个文件(文件名不限定,也可以是MANIFEST.MF),内容如下:

 Manifest-Version: 1.0
Created-By: 1.8.0_25 (Oracle Corporation)
Main-Class: JarTest

  即指定了将要生成的Jar包的主类文件名为JarTest(实现文件为JarTest.java)。注意,必须在后面另起一行,即留一空行。

  如果找一个Jar包将其解压,会发现文件夹中包含的全是.class文件,个人认为这样做的原因为.class利于保密与运行,毕竟.java文件可以直接获取实现代码并且要编译后才能运行。

  这里主要是抛砖引玉,所以只是写一个最为基本的.java文件,总代码数不足10行。Java文件JarTest.java中代码如下:

 import java.util.Scanner;

 public class JarTest {

     public static void main(String[] args){

         System.out.println("This is the first jar project.");

         Scanner reader=new Scanner(System.in);
int i = reader.nextInt();
} }

  看到代码,可能有人会奇怪:至于第7行,输出一行文字标记运行成功,很好理解;那第9行的输入在这里有必要吗,答案是肯定的,这样做是为了后续双击运行.bat文件时CMD窗口不会一闪而逝,让其因IO中断等待用户的指令。

  有了.java文件,接下来就可以得到.class文件,利用命令javac对.java文件进行编译即可。虽然很简单,还是给出过程截图吧:

  顺便提一下,利用java命令可以直接运行.class文件,结果图如下:

  那么,到目前为止,制作可执行Jar包的文件都已准备就绪。当前已有文件截图如下:

4、Jar包生成与运行

  利用之前介绍过的Jar包生成命令jar与准备好的.class、MANIFEST.MF文件,制作Jar包JarTest.jar的完整命令如下:

 jar –cvmf JarTest.jar MANIFEST.MF JarTest.class

  然后,就可以运行它了,响应命令与结果如下图:

5、.bat文件制作

  将一些常用的命令制作成一个.bat文件,使用的时候双击运行可以,虽然可能有时需要对内容进行细微的改变,但也比一行一行敲命令要方便很多。

这里要制作的.bat文件目的是运行上面生成的Jar包JarTest.jar,方法很简单:

  a) 新建一个文件(后缀改为.bat,文件名称最好和Jar包一致,养成良好的习惯);

  b) 打开,输入内容为java -jar JarTest.jar;

  大功告成,保存之后,直接双击运行即可。如之前所述,弹出窗口会一直等待用户的输入,这样方便观察运行结果,如图:

  注意,虽然运行结果和CMD中敲入命令是一致的,但这里的窗口是双击.bat文件后自动弹出的。

6、总结

  总的来说,本文介绍的内容是非常基础的,主要是两个部分。

  第一,Jar包的生成。不管是可执行的还是作为库文件被导入并调用的,生成的过程和思想是相通的;

  第二,.bat文件的制作,这样做的好处有很多:如命令的整理与复用,运行的方便与高效等。需要注明的是,.bat文件中包含的命令内容并不局限与某一种语言,可以是C、C++、Java及Shell等,也可以是CMD中的命令,如删除del、重命名ren等。

.bat文件和Jar包的生成及运行的更多相关文章

  1. jar包的生成及运行

    Hello, 大家好,我们见面了,今天是2015年7月30日,我在青岛,你好吗? 这里总结下刚学习到的jar包的生成和运行,网上的资料一搜一大片,我这里总结下适用的 一:jar包的生成: 1:命令行, ...

  2. 可运行jar包生成步骤和jar包的生成

    一.可运行jar包生成步骤 1.进入.class文件所在目录,新建一个记事本文件,假设为1.txt,文件内容: 1> Main-Class:可运行类的名字  (  例如:Main-Class:T ...

  3. 根据已有的Jar包 一键生成对应的mavenpom.xml信息

    根据已有的jar包信息一键生成对应的maven坐标信息 .想一个问题 假如 我有一个SSH的项目, jar包是配置在lib中, 我现在想把它做成maven格式的SSH项目  ,那么这些jar包在mav ...

  4. IDEA将指定package(指定文件)打成jar包

    写在前面 真的是好记性不如烂笔头 需求 将项目中包名为org的package打成jar包 步骤 1.选择Artifacts>绿色+号>JAR>Empty name自定义, 我这里命名 ...

  5. Mamen所需要的jar包怎么生成

    Mamen所需要的jar包怎么生成 使用 mamen 难免碰到,不知道的 jar 包,不知道怎么在 pom 文件中写,分享一个网址,可以把你想要的 jar 包生成 pom 配置文件,个人感觉非常好用. ...

  6. 把java的class文件打成jar包的步骤

    现在我的文件夹的目录在: C:\Users\linsenq\Desktop\cglibjar 我要把位于这个目录下的所有文件夹以及这个文件夹下的.class文件打成jar包 第一步:用win+R 打开 ...

  7. java 项目打jar包,用cmd运行,并且编写运行脚本

    项目是ideal编辑器的springboot项目的demo.打包就是在侧边栏,点击packge ,就会在target下生成jar包. 生成之后把 jar包放在一个文件夹中.新建一个txt文件,在txt ...

  8. (转)通过maven,给没有pom文件的jar包生成pom文件,maven项目引入本地jar包

    文章完全转载自 : https://blog.csdn.net/qq_31289187/article/details/81117478 问题一: 经常遇到公司私服或者中央仓库没有的jar包,然后通过 ...

  9. 如何打包/运行jar包,及生成exe文件

    关于如何打包/运行jar包,以及生成exe文件.之前各种查询.博客,终于搞明白究竟是咋回事.记得还做过笔记的.今天要打包生成exe用的时候,居然忘了咋怎来着.去查看之前的笔记,死活没找到(好像被删掉了 ...

随机推荐

  1. javascript中的scrollTop

    含义:滚动条高度 作用:滚动加载(ajax),滚动导航固定定位,滚动弹框定位等等. 展示滚动导航和侧边栏滚动固定定位的效果:查看效果 1.chrome浏览器 document.body.scrollT ...

  2. jQuery iPresenter 3D图片旋转

    在线实例 效果一 效果二 使用方法 <div class="htmleaf-container"> <div class="htmleaf-conten ...

  3. arcgis for flex展示GIS基本功能

    1.地图框选搜索: 这是空间查询,在地图上框选一定的范围,然后搜索出在这个范围之内的所有信息,搜索到的详细信息在列表框显示出来 2.属性查询: 3.数据库展示: 4.绘制图形: 地图上绘制各种不同形状 ...

  4. iOS多线程之3.NSThread的线程间通信

      我们把一些耗时操作放在子线程,例如下载图片,但是下载完毕我们不能在子线程更新UI,因为只有主线程才可以更新UI和处理用户的触摸事件,否则程序会崩溃.此时,我们就需要把子线程下载完毕的数据传递到主线 ...

  5. iOS点击推送消息跳到应用指定页面

    现在的推送用的越来越频繁,几乎每个应用都开始用到了.其实又有几个用户会去看推送消息呢?没办法,产品经理最大啊,只是苦了我们这一帮程序员啊!闲话少说,进入正题.兄弟我用的是极光推送,自然是以极光推送为例 ...

  6. Linux0.11内核--fork进程分析

    [版权所有,转载请注明出处.出处:http://www.cnblogs.com/joey-hua/p/5597818.html ] 据说安卓应用里通过fork子进程的方式可以防止应用被杀,大概原理就是 ...

  7. Git:Git初体验——Git安装配置

    作为即将成为一个程序员的男人,一直在听别人说Git多好多好,之前也随便了解了一些,但是始终没有决心去学会.现在大四了,只有毕设和一门开学六七周只去过一次课的全员必修课外,也没有什么事情做,何不去做这些 ...

  8. zDiaLog弹出层

    zDiaLog弹出层  立即下载 插件描述:zDiaLog弹出层 弹出框: 代替window.open.window.alert.window.confirm:提供良好的用户体验: 水晶质感,设计细腻 ...

  9. Windows下使用Xshell建立反向隧道

    反向隧道是一个进行内网穿透的简单而有用的方法.在Linux下通过OpenSSH和AutoSSH可以很容易地建立稳定的反向隧道.但是在Windows下,还能看到有人特意装个Cygwin来运行这些工具…… ...

  10. Ignite 配置更新Oracle JDBC Drive

           如果使用Oracle 12C 作为Ignite 的Repository的话,在Repository Createion Wizard的配置过程中,会出现ORA-28040:No matc ...