把java文件打包成.jar (jar命令详解)

先打开命令提示符(win2000或在运行框里执行cmd命令,win98为DOS提示符),输入jar Chelp,然后回车(如果你盘上已经有了jdk1.1或以上版本),看到什么:

用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...

选项:

-c 创建新的存档

-t 列出存档内容的列表

-x 展开存档中的命名的(或所有的〕文件

-u 更新已存在的存档

-v 生成详细输出到标准输出上

-f 指定存档文件名

-m 包含来自标明文件的标明信息

-0 只存储方式;未用zip压缩格式

-M 不产生所有项的清单(manifest〕文件

-i 为指定的jar文件产生索引信息

-C 改变到指定的目录,并且包含下列文件:

如果一个文件名是一个目录,它将被递归处理。

清单(manifest〕文件名和存档文件名都需要被指定,按'm' 和 'f'标志指定的相同顺序。

示例1:将两个class文件存档到一个名为 'classes.jar' 的存档文件中:

jar cvf classes.jar Foo.class Bar.class

示例2:用一个存在的清单(manifest)文件 'mymanifest' 将 foo/ 目录下的所有文件存档到一个名为 'classes.jar' 的存档文件中:

jar cvfm classes.jar mymanifest -C foo/ .

来个小例子试试看:

我们只有一个HelloWorld,如下:

public class HelloWorld{

public static void main(String[ ] args){

System.out.println(“Hi, Hello World!”);

}

}

将这个java文件存到C盘跟目录下,ok,接下来,

在先前打开的命令提示符下(跳转到C盘提示符下),我们输入javac HelloWorld.java,然后继续输入:jar

cvf    hello.jar    HelloWorld.class,回车后去你的C盘看看,多了什么,没错 hello.jar 。

基本的步骤我们现在都知道了,你可以自己去尝试一下随着jar后面的参数的不同,结果有什么变化。

紧接着我们看看如何运行我们的jar包。

在进入正题之前,你要先打开我们刚刚做好的jar包看看,多了什么呢,META-INF目录?再看看里面是什么,还有一个MANIFEST.MF文件是不是?用文本编辑器(我这里是UltraEdit)打开它看看:

Manifest-Version: 1.0

Created-By: 1.4.2 (Sun Microsystems Inc.)

就是这样。这里我们对它进行修改,加一句:Main-Class: HelloWorld (在第三行)。这个就是我们之前写的那个类,也就是我们的入口类。也即,

Manifest-Version: 1.0

Created-By: 1.4.2 (Sun Microsystems Inc.)

Main-Class: HelloWorld

接下来,我们在命令提示符里执行:

jar    umf

MANIFEST.MF    app.jar  (应该是hello.jar吧)

这样我们使用了我们自己的MANIFEST.MF文件对原来默认的进行了更新。你不妨可以再进去看看是不是添上了Main-Class:

HelloWorld这一句。    (是吗,我怎么没试出来,提示java.io.FileNotFoundException:MANIFEST.MF(系统找不到指定的文件)怎么回事?)

Ok,这个最后的一步了,来验证我们做的一切,在命令提示符中输入:

java -jar hello.jar(执行)

出现了什么, Hi, Hello World!

我们再来看看jar文件在tomcat中发布,注意:在tomcat中我们就不能再用jar这种格式,而改war格式,它是专门用于web应用的,其实整个过程下来基本上和jar是类似的:

先准备我们要打包的资源。

找到存放tomcat的webapps目录,进到其中,新建一个文件夹,这里命名为hello,再进去新建WEB-INF文件夹,再进去新建classes文件夹,此时我们也将我们唯一的servlet,HelloWorld.java放到这里,在与classes目录同级下建立一文件web.xml。Ok,目前我们初步建立了一个简单的web应用。

这是HelloWorld.java:

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {

public void doGet(HttpServletRequest req,

HttpServletResponse res)

throws ServletException, IOException {

res.setContentType("text/html");

PrintWriter out = res.getWriter();

out.println("");

out.println("");

out.println("");

out.println("Hello, World!");

out.println("");

}

}//end here!

对它编译。下面是web.xml:

encoding="UTF-8"?>

/p>

Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd">

hello

HelloWorld

hello

/HelloWorld

在命令提示符下进到先前创制的hello目录下,执行 jar cvf hello.war * ,我们便得到hello.war。将它拷贝至webapps目录下,ok,来看最后一步,打开tomcat的目录conf中的server.xml,加入:

docBase="hello.war" debug="0"

reloadable="true"/>

最后,如果你想用ant来完成以上的打包活动,下面就告诉你:

对于jar来说。在build.xml中,

destfile="${app_home}/hello.jar">

includes="**"/>

对于war,

webxml="./WEB-INF/web.xml">

好了,就这么多,希望对你有点帮助。:)

补充:

jar基本操作:

1. 创建jar文件

jar cf jar-file input-file(s)

c---want to Create a JAR file.

f---want the output to go to a file rather than to

stdout.

eg: 1)jar cf myjar.jar query_maintain_insert.htm

2)jar cvf myjar.jar query_maintain_insert.htm

v---Produces verbose(详细的)

output.

3)jar cvf myjar.jar query_maintain_insert.htm

mydirectory

4)jar cv0f myjar.jar query_maintain_insert.htm

mydirectory

0---don't want the JAR file to be compressed.

5)jar cmf MANIFEST.MF myjar.jar yahh.txt

m---Used to include manifest information from an

existing manifest file.

6)jar cMf MANIFEST.MF myjar.jar yahh.txt

M---the default manifest file should not be

produced.

7)jar cvf myjar.jar *

*---create all contents in current directory.

2. 察看jar文件

jar tf jar-file

t---want to view the Table of contents of the JAR

file.

eg: 1)jar vft yahh.jar

v---Produces verbose(详细的)

output.

3. 提取jar文件

jar xf jar-file [archived-file(s)]

x---want to extract files from the JAR archive.

eg: 1)jar xf yahh.jar yahh.txt(仅提取文件yahh.txt)

2)jar xf yahh.jar alex/yahhalex.txt(仅提取目录alex下的文件yahhalex.txt)

3)jar xf yahh.jar(提取该jar包中的所有文件或目录)

4. 修改Manifest文件

jar cmf manifest-addition jar-file input-file(s)

m---Used to include manifest information from an

existing manifest file.

5. 更新jar文件

jar uf jar-file input-file(s)

u---want to update an existing JAR file.

出处:http://wenku.baidu.com/view/82142dfa0029bd64793e2c1b.html

java文件打包jar文件_把java文件打包成.jar (jar命令详解)相关推荐

  1. python远程linux服务器执行命令_基于使用paramiko执行远程linux主机命令(详解)

    paramiko是python的SSH库,可用来连接远程linux主机,然后执行linux命令或者通过SFTP传输文件. 关于使用paramiko执行远程主机命令可以找到很多参考资料了,本文在此基础上 ...

  2. centos怎么用命令关机_【转】centos关机与重启命令详解

    Linux centos关机与重启命令详解与实战 Linux centos重启命令: 1.reboot 2.shutdown -r now 立刻重启(root用户使用) 3.shutdown -r 1 ...

  3. 封装成jar包_通用源码阅读指导mybatis源码详解:io包

    io包 io包即输入/输出包,负责完成 MyBatis中与输入/输出相关的操作. 说到输入/输出,首先想到的就是对磁盘文件的读写.在 MyBatis的工作中,与磁盘文件的交互主要是对 xml配置文件的 ...

  4. java木板接水问题_木作施工常见的问题汇总,详解,避免留下遗憾

    木作工程在装修中的工期比较长,所占的费用也比较多.另外木板的不稳定性,决定了其不可预见的毛病会比较多,今天厚匠总结了木作施工常见的几个问题,希望对你有帮助. 木板接缝处开裂 由于木材干燥收缩,遇水膨胀 ...

  5. 把java文件打包成.jar (jar命令详解)

    把java文件打包成.jar (jar命令详解) 先打开命令提示符(win2000或在运行框里执行cmd命令,win98为DOS提示符),输入jar Chelp,然后回车(如果你盘上已经有了jdk1. ...

  6. 制作可执行的JAR文件包及jar命令详解

    制作可执行的JAR文件包及jar命令详解zt http://www.chinaunix.net 作者:郝君  发表于:2003-08-12 14:32:38 常常在网上看到有人询问:如何把 java  ...

  7. macOS下查看Java/JDK的安装目录_查看Java/JDK的版本信息_配置环境变量JAVA_HOME

    文章目录 查看JDK的安装目录 查看系统当前正在使用的 JDK 版本信息 配置环境变量 JAVA_HOME 查看JDK的安装目录 通常情况下,macOS安装JDK,默认是安装在 /Library/Ja ...

  8. 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目

    王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...

  9. linux命令打包文件,Linux系统中打包文件的命令详解

    linux系统中遇到要打包文件的时候我们该使用什么命令呢?下面由秋天网 Qiutian.ZqNF.Com小编为大家整理了linux系统中打包文件的命令详解的相关知识,希望对大家有帮助! linux系统 ...

最新文章

  1. 让iis7.5显示php错误的详细信息~
  2. linux tftp上传文件失败的原因
  3. CSP认证201703-4 地铁修建[C++题解]:连通路径上的最大边权最小、bfs求边权为1的最短路、二分查找
  4. MIT自然语言处理第三讲:概率语言模型(第一、二、三部分)
  5. 【网址收藏】rancher镜像源仓库
  6. springboot超详细教程_超详细便当袋教程 || 特殊时期,自己带饭最安心!
  7. keepalived mysql双主架构图_MySQL双机热备(keepalived+mysql双主)
  8. 同样是消息队列,Kafka凭什么速度那么快?
  9. YOLOv3 提升 5.91 mAP,IoU在目标检测中的正确打开方式
  10. 太难了!国内手机出货量大幅下降:华为跌幅小,小米跌惨了
  11. Java数据库连接池c3p0和druid
  12. GTD时间管理系统入门
  13. 我们常常怕打扰别人,而忽略要打个电话问候对方,
  14. ireport模块之间的动态传参及拼接SQL
  15. 黑苹果驱动_黑苹果目前已可以完美驱动内置intel WiFi
  16. multisim10.0安装教程
  17. 新能源充电桩主板二代新上市,迎来充电桩产业新一轮发展
  18. pdf转换成jpg转换器的使用方法
  19. 安卓病毒频发,做好手机安全防护很有必要
  20. 一名数据仓库工程师的自我修养

热门文章

  1. GIS大数据可视化分析工具
  2. Qt5 学习之路及嵌入式开发教程11:Qt5标准输入对话框类及QSlider控件
  3. 【VPD】使用Oracle VPD(Virtual Private Database)限制用户获取数据的范围
  4. 【生活】如何线上办理持有广州社保人员的异地分娩医保登记 - 定点医院 - 异地就医报销相关
  5. 普罗米修斯?对!就是 Prometheus ,如何计算 P90 / P99 ? 准确评控服务耗时性能!
  6. MYSQL彻底卸载(步步图解)
  7. 静态代码检查-CheckStyle
  8. 蓝桥杯——单片机设计与开发初学者必备资料
  9. matlab处理数据,提示“提示位置1处的索引超出数组边界。不能超出1”,这该怎么处理呢
  10. 唐宇迪学习笔记4:Python可视化库——Seaborn