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

.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版本。如下图:

1 Manifest-Version: 1.0
2 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),内容如下:

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

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

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

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

 1 import java.util.Scanner;
 2
 3 public class JarTest {
 4
 5     public static void main(String[] args){
 6
 7         System.out.println("This is the first jar project.");
 8
 9         Scanner reader=new Scanner(System.in);
10         int i = reader.nextInt();
11     }
12
13 }

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

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

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

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

4、Jar包生成与运行

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

1 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等。

时间: 2024-12-16 21:35:27

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

jar包的生成及运行

Hello, 大家好,我们见面了,今天是2015年7月30日,我在青岛,你好吗? 这里总结下刚学习到的jar包的生成和运行,网上的资料一搜一大片,我这里总结下适用的 一:jar包的生成: 1:命令行,jar -cvfm hello.jar 1.txt hello/ 命令说明:hello.jar就是可执行的jar包, 1.txt里写的内容是Main-Class: hello ,hello/就是包,记得要在hello.java文件里加入package hello; 2:用eclipse生成,File

Eclipse中Jar包的生成与使用

最近在熟悉Java语言,在学习过程中对Eclipse常用操作熟悉了一遍.这篇文章简单说下Jar包的生成与使用. Java中Jar包相当于C/C++中的lib库,它是对.class文件进行打包:常用的Jar包有API库包(^_^,这个是我杜撰的)和可执行的Jar包.这篇文章讲解下API库包的生成,操作过程如下所示: 新建一个Java工程JarExp,新建一个jarexp.java文件:要生成Jar包的源代码jarexp.java为: package com.lming08.data; import

jar包的生成和使用

jar包的生成和jar命令有关,它有很多的参数,创建新的jar包必不可少的参数c,指定jar包文件名的参数f,假如现在想要将test.java打包为test.jar: 1.将test.java编译test.class: javac test.java 2.将编译得到的test.class用jar命令打包 jar cf test.jar test.class 如果新创建一个java程序需要引用test.jar时,需要首先让新的java程序知道test.jar在哪里,这需要设置CLASSPATH系统

【Java】Java程序打包成jar包在Linux上运行

当需要把在Windows上开发的Java程序用在Linux上运行时,就需要吧该Java程序打包成jar包上传到Linux上去运行. 1.Java程序用MyEclipse打包成可运行的jar包 (1)在MyEclipse中选中需要打包的项目,点击右键,选择:Export... 如下图所示: (2)然后在弹出的窗口中选择:Java-->Runnable JAR file,然后点击:Next,如下图所示: (3)然后选择需要打包的程序和保存的地方,然后点击:Finish,如下图所示: 这样Java程序

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

关于如何打包/运行jar包,以及生成exe文件.之前各种查询.博客,终于搞明白究竟是咋回事.记得还做过笔记的.今天要打包生成exe用的时候,居然忘了咋怎来着.去查看之前的笔记,死活没找到(好像被删掉了).决定写下来,以便之后随时调用. 一.jar包 什么是jar包?jar包即(Java Archive File),也就是java归档文件.JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的

android-将.java文件转换为jar包(八)

今天碰到将C++封装的接口转换为java代码,生成的java文件是.java的,需要将其打包为jar的库文件. 一.新建java工程,将所有的.java文件拷贝到新建package下 二.将其导出为jar包 一步步向导就可完成.

javac编译单文件、多文件引入jar包、-cp解决无法加载主类问题

 引言:很多人用ide集成开发环境用的多了,对dos命令编译多个java文件或引入jar包都变得陌生了,java不同于其他解释语言,如ruby.php 都有require,直接引入即可运行代码,但java需要先编译成字节码,所以运行的时候需要在cmd里面加些参数 1. 引入外部jar包编译运行 测试目录结构 test -- src/A.java -- lib/pinyin4j-2.5.0.jar  A.java 代码如下: 1 import net.sourceforge.pinyin4j.Pi

打包文件夹或文件为jar包

示例 1:将两个类文件归档到一个名为 classes.jar 的归档文件中: jar cvf classes.jar Foo.class Bar.class 示例 2:使用现有的清单文件 "mymanifest" 并将 foo/ 目录中的所有文件归档到 "classes.jar" 中: jar cvfm classes.jar mymanifest -C foo/ . e.g.(文件夹打jar包)1.根目录必须创建文件夹META-INF2.在新建的META-INF目

(二)Android 打包 so文件到jar包

我们经常需要向客户提供开发用的jar包和so文件,那么能不能将二者打包在一起呢,答案是可以. 首先我们需要将资源文件(包括so文件.配置文件以及其他资源等)放入assets文件夹下,然后在代码中,将他们复制到指定路径,并手动加载对应的so文件. 我的资源文件树结构如下: 详细的代码如下: 1 public static boolean init(Context mContext) 2 { 3 initAssetsFile(mContext,"armeabi"); 4 System.lo