java文件打包jar文件_把java文件打包成.jar (jar命令详解)
把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命令详解)相关推荐
- python远程linux服务器执行命令_基于使用paramiko执行远程linux主机命令(详解)
paramiko是python的SSH库,可用来连接远程linux主机,然后执行linux命令或者通过SFTP传输文件. 关于使用paramiko执行远程主机命令可以找到很多参考资料了,本文在此基础上 ...
- centos怎么用命令关机_【转】centos关机与重启命令详解
Linux centos关机与重启命令详解与实战 Linux centos重启命令: 1.reboot 2.shutdown -r now 立刻重启(root用户使用) 3.shutdown -r 1 ...
- 封装成jar包_通用源码阅读指导mybatis源码详解:io包
io包 io包即输入/输出包,负责完成 MyBatis中与输入/输出相关的操作. 说到输入/输出,首先想到的就是对磁盘文件的读写.在 MyBatis的工作中,与磁盘文件的交互主要是对 xml配置文件的 ...
- java木板接水问题_木作施工常见的问题汇总,详解,避免留下遗憾
木作工程在装修中的工期比较长,所占的费用也比较多.另外木板的不稳定性,决定了其不可预见的毛病会比较多,今天厚匠总结了木作施工常见的几个问题,希望对你有帮助. 木板接缝处开裂 由于木材干燥收缩,遇水膨胀 ...
- 把java文件打包成.jar (jar命令详解)
把java文件打包成.jar (jar命令详解) 先打开命令提示符(win2000或在运行框里执行cmd命令,win98为DOS提示符),输入jar Chelp,然后回车(如果你盘上已经有了jdk1. ...
- 制作可执行的JAR文件包及jar命令详解
制作可执行的JAR文件包及jar命令详解zt http://www.chinaunix.net 作者:郝君 发表于:2003-08-12 14:32:38 常常在网上看到有人询问:如何把 java ...
- macOS下查看Java/JDK的安装目录_查看Java/JDK的版本信息_配置环境变量JAVA_HOME
文章目录 查看JDK的安装目录 查看系统当前正在使用的 JDK 版本信息 配置环境变量 JAVA_HOME 查看JDK的安装目录 通常情况下,macOS安装JDK,默认是安装在 /Library/Ja ...
- 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目
王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...
- linux命令打包文件,Linux系统中打包文件的命令详解
linux系统中遇到要打包文件的时候我们该使用什么命令呢?下面由秋天网 Qiutian.ZqNF.Com小编为大家整理了linux系统中打包文件的命令详解的相关知识,希望对大家有帮助! linux系统 ...
最新文章
- 让iis7.5显示php错误的详细信息~
- linux tftp上传文件失败的原因
- CSP认证201703-4	地铁修建[C++题解]:连通路径上的最大边权最小、bfs求边权为1的最短路、二分查找
- MIT自然语言处理第三讲:概率语言模型(第一、二、三部分)
- 【网址收藏】rancher镜像源仓库
- springboot超详细教程_超详细便当袋教程 || 特殊时期,自己带饭最安心!
- keepalived mysql双主架构图_MySQL双机热备(keepalived+mysql双主)
- 同样是消息队列,Kafka凭什么速度那么快?
- YOLOv3 提升 5.91 mAP,IoU在目标检测中的正确打开方式
- 太难了!国内手机出货量大幅下降:华为跌幅小,小米跌惨了
- Java数据库连接池c3p0和druid
- GTD时间管理系统入门
- 我们常常怕打扰别人,而忽略要打个电话问候对方,
- ireport模块之间的动态传参及拼接SQL
- 黑苹果驱动_黑苹果目前已可以完美驱动内置intel WiFi
- multisim10.0安装教程
- 新能源充电桩主板二代新上市,迎来充电桩产业新一轮发展
- pdf转换成jpg转换器的使用方法
- 安卓病毒频发,做好手机安全防护很有必要
- 一名数据仓库工程师的自我修养
热门文章
- GIS大数据可视化分析工具
- Qt5 学习之路及嵌入式开发教程11:Qt5标准输入对话框类及QSlider控件
- 【VPD】使用Oracle VPD(Virtual Private Database)限制用户获取数据的范围
- 【生活】如何线上办理持有广州社保人员的异地分娩医保登记 - 定点医院 - 异地就医报销相关
- 普罗米修斯?对!就是 Prometheus ,如何计算 P90 / P99 ? 准确评控服务耗时性能!
- MYSQL彻底卸载(步步图解)
- 静态代码检查-CheckStyle
- 蓝桥杯——单片机设计与开发初学者必备资料
- matlab处理数据,提示“提示位置1处的索引超出数组边界。不能超出1”,这该怎么处理呢
- 唐宇迪学习笔记4:Python可视化库——Seaborn