jar命令的使用
++YONG原创,转载请注明
一、 的全称:jar
Java Archive File,java存档文件。这有点类似zip文件。
1. 命令用法:jar
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/ 。
2. 示例:
1) 我们只有一个HelloWorld,如下:
public class HelloWorld{
public static void main(String[ ] args){
System.out.println(“Hi, Hello World!”);
}
}
|
将这个java文件存到C盘跟目录下,接下来,在先前打开的命令提示符下(跳转到C盘提示符下),我们输入javac HelloWorld.java,然后继续输入:jar cvf hello.jar HelloWorld.class,回车后去你的C盘看看,多了什么,没错 hello.jar 。
基本的步骤我们现在都知道了,你可以自己去尝试一下随着jar后面的参数的不同,结果有什么变化。
2) 紧接着我们看看如何运行我们的jar包。在进入正题之前,你要先打开我们刚刚做好的jar包看看,多了什么呢,META-INF目录?再看看里面是什么,还有一个MANIFEST.MF文件是不是?用文本编辑器(我这里是UltraEdit)打开它看看(注意文件未尾有两空行):
Manifest-Version: 1.0
Created-By: 1.6.0 (Sun Microsystems Inc.)
|
这里我们对它进行修改,加一句:Main-Class: HelloWorld (在第三行,注意在Main-Class:和类之间要有一个空格,否则运行时说“Invalid or corrupt jarfile xxx.jar”)。这个就是我们之前写的那个类,也就是我们的入口类。也即:(文件未尾的两个空行不能少,否则运行时也说“Invalid or corrupt jarfile xxx.jar”)
Manifest-Version: 1.0
Created-By: 1.6.0 (Sun Microsystems Inc.)
Main-Class: HelloWorld
|
接下来,我们在命令提示符里执行:
jar umf MANIFEST.MF hello.jar |
这样我们使用了我们自己的MANIFEST.MF文件对原来默认的进行了更新(其实也可用winrar之类的解压工具打开jar包,把新的MANIFEST.MF拖进去)。最后的一步,验证我们做的一切,在命令提示符中输入:
java -jar hello.jar |
出现了什么, Hi, Hello World!
二、关于MANIFET.MF文件:
打 Java 包的时候可以有一个清单文件:MANIFEST.MF,它是打包的关键性文件,主要是设置执行入口类和支持库的路径,在运行 Java 应用程序时会根据此文件中给出的信息来查找入口类和支持库。
它的内容一般包括:
Manifest-Version: 1.0
Created-By: 1.6.0 (Sun Microsystems Inc.)
Main-Class: HelloWorld
|
其中比较容易忽略的是还可以有一个Class-Path属性的设置,Class-Path:用来指定支持库的路径,程序运行时依据 Class-Path 项的设置路径来查找支持库,每一个支持库之间用空格分开。比如这样写清单文件:
Manifest-Version: 1.0
Class-Path: ./lib/msbase.jar ./lib/mssqlserver.jar ./lib/msutil.jar
Created-By: 1.6.0 (Sun Microsystems Inc.)
Main-Class: org.qiujy.test.TestDB
|
这样当前目录的 lib 目录下的几个包都可以在运行时被找到,我们制作可自运行的 Java 程序时,就不用写一个批处理文件来写明 CLASSPATH ,直接在这里指定就可以了。
示例:
1) 在D:/qiujyJarTest目录下写一个测试数据库连接的类:
package org.qiujy.test;
import java.sql.*;
public class TestDB{
public static void main(String[] args){
String url = "jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=myblog";
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn = DriverManager.getConnection(url, "sa","");
System.out.println(conn);
}catch(Exception e){
e.printStackTrace();
}
}
}
|
2) 用如下命令编译此文件:
javac -d . TestDB.java |
就会在当前目录生成带包结构的TestDB.class文件:
3) 在当前文件下创建一jar清单文件qiujyManifest.txt (文件名随便取):(注意每行的”:”后有一空格,文件未尾有两空行)
Manifest-Version: 1.0
Class-Path: ./lib/msbase.jar ./lib/mssqlserver.jar ./lib/msutil.jar
Main-Class: org.qiujy.test.TestDB
|
此时D:/qiujyJarTest目录的结构如下:
4) 用如下命令打jar包:
jar -cmvf qiujyManifest.txt test.jar lib org |
此命令的含义是:指定打包的清单文件为当前目录下的qiujyManifest.txt,打当前目录下的lib和org目录打到test.jar包中。此时在当前目录下就会生成一个test.jar包。
5) 测试打包是否成功:
启动sqlserver数据库。在命令行用如下命令:java -jar test.jar。如果出现如下信息说明我们打的包成功运行并成功连上数据库。
http://download1.csdn.net/down3/20070620/20101449378.rar
附本演示的程序源码:
三、jar文件在tomcat中的发布
注意:在tomcat中我们就不能再用jar这种格式,而改war格式,它是专门用于web应用的,其实整个过程下来基本上和jar是类似的:
1. 先准备我们要打包的资源。
找到存放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("");
out.close();
}
}
|
2. 对它编译。下面是web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
</web-app>
|
3. 在命令提示符下进到先前创制的hello目录下,执行 jar cvf hello.war * ,我们便得到hello.war。将它拷贝至webapps目录下,ok,来看最后一步,打开tomcat的目录conf中的server.xml,加入:
<Context path="/hello" docBase="hello.war" debug="0" reloadable="true"/>
大功告成!运行它,启动tomcat,后在浏览器中输入http://localhost:8080/hello/HelloWorld,有了吗?祝你好运!
相关推荐
2. **启动Sentinel Dashboard**:解压完成后,你可以通过命令行工具进入包含"sentinel-dashboard-1.6.3.jar"的目录,然后使用以下Java命令来启动Sentinel控制台: ``` java -jar sentinel-dashboard-1.6.3.jar ``...
开放手机联盟, Open Handset Alliance :是美国 Google 公司与 2007 年 11 月 5 日宣布组建的一个全球性的联 盟组织。这一联盟将会支持 Google 发布的 Android 手机操作系统或者应用软件,共同开发名为 Android 的 ...
Java 19是Oracle公司推出的Java Development Kit (JDK) 的一个重要版本,版本号19.0.1,这是在2022年11月08日发布的更新。Java作为一个广泛使用的编程语言和平台,对于Windows用户尤其重要,因为它提供了在Windows...
- **解析和加载jar包**:服务器端需要将接收到的字节流转换回jar文件,并使用Java的ClassLoader加载这个jar包。 - **执行命令**:找到jar包中的main方法,通过反射机制调用这个方法执行任务。 - **返回结果**:...
- `PATH`: 添加`%JAVA_HOME%/bin`,使得可以全局调用Java命令,如`java`, `javac`, `jar`等。 - `CLASSPATH`: 指向Java类库的位置,但现代Java版本通常不需要手动设置,因为它们会自动加载需要的库。 4. **验证...
Java语言的研发始于1990年,最初命名为Oak,后在1995年5月正式发布为Java 1.0版本。自那时起,Java经历了多次重大更新,如Java 1.1(1997年)、Java 1.2(1998年)、Java 1.3(2000年)、Java 1.4(2002年)、Java ...
21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持...
通过执行`java -jar start.jar`命令,你可以启动Jetty并应用在`start.ini`中定义的配置。 3. **LICENSE-EPLv10-ASLv20.html** 和 **NOTICE.html**: 这些文件包含了Jetty的许可协议,Eclipse Public License v1.0 ...
5. **JDK使用**: - `javac`编译器:将源代码(`.java`文件)编译成字节码(`.class`文件)。 - `java`解释器:执行编译后的字节码文件,或者运行Java应用程序。 - `jar`工具:打包和管理Java类库,创建`.jar`...
可以创建Java项目、编译源代码(使用javac命令)、运行Java应用程序(使用java命令)以及使用JDK附带的各种工具,如jar工具(打包和解包jar文件)和javadoc(生成API文档)。 六、OpenJDK 11的新特性 1. 模块化...
【标签】"windows" 表明该软件是为Windows操作系统设计的,这意味着它可以无缝地在Windows环境中运行Java应用程序,包括使用命令行工具如`java`, `javac`, 和 `jar`等。 【压缩包子文件的文件结构】在"openlogic-...
1. **bin**:这个目录包含了一系列可执行文件,如`javac`(Java编译器),`java`(Java虚拟机),`jar`(打包工具)等,它们是Java开发和运行的基础。 2. **conf**:配置文件,如`logging.properties`,用于设置日志...
5. `org.eclipse.core.commands_3.6.100.v20130515-1857.jar`: 这是Eclipse命令框架库,用于处理应用中的命令和事件,版本3.6.100,同样发布于2013年5月15日。 6. `org.eclipse.equinox.common_3.6.200.v20130402-...
这个版本是在2013年4月推出的,它包含了Java编译器、Java运行时环境(JRE)、Java类库以及各种开发工具,如Java调试器(JDB)、Java可视化工具(JVisualVM)等。 在Java世界中,JDK是核心组成部分,它是Java编程的...
9. **更新维护**:版本号“V3_20191210_81acdf5”表明这是2019年12月的一个版本,开发者应关注百度官方的更新,以确保使用的是最新且稳定的服务。 10. **测试与调试**:在实际开发过程中,测试唤醒功能的可靠性和...
这个生成器的使用方式非常简单,只需要运行压缩包中的`CronExpBuilder.jar`文件,这是一个Java应用程序。在命令行环境中,你可以输入以下命令来启动它: ```shell java -jar CronExpBuilder.jar ``` 这个工具通常...
7. **Java版本策略**:Oracle自Java 9开始采用了新的发布节奏,每六个月发布一个新版本,其中偶数版本(如14、16)是长期支持(LTS)版本,而奇数版本(如15)是短期支持版本,仅提供六个月的支持。 8. **兼容性和...
- **注意事项**:在Windows 7 Home版本中无法使用上述命令脚本,建议在Windows XP环境下安装和测试OpenJWeb开源版本。 ##### 3. **启动Tomcat** - 打开`D:\project\apache-tomcat-5.5.27\bin`目录,点击`startup...
这个压缩包 "geoserver-2.19.1-bin-20210713b.rar" 包含了 GeoServer 的二进制版本,版本号为 2.19.1,发布日期为2021年7月13日。这个版本可能是稳定版,因为它有一个“b”(可能是“binary”或“build”的缩写)...
**Apache Maven 3.3.9工具包**是软件开发领域中的一个重要构建工具,主要用于Java项目管理。Maven简化了构建过程,通过依赖管理和项目对象模型(Project Object Model,POM)来自动化项目的构建、报告和文档生成。该...