如何击打和运行jar包
首先,例如,类HelloWorld.java:位于c驱动器的根目录下
公共类Helloworld { publicstaticvoidmain (string [ ] args ) system.out.println )、hello world! ‘ ); 将HelloWorld.java放入jar包中运行:
1。 进入cmd
2。 到CD.c驱动器根
3。 让我们运行java类。 javac HelloWorld.java
4。 在同一目录中创建h.mf文件。 内容如下。
manifest-version :1.0 main-class : Helloworld created-by :1.2.2 (sunmicrosystemsinc.) :其中hello world是修补程序
5。 在cmd上运行:
jar cfm hello.jar h.mf *.class
其中hello是成为jar包的名称(或cvfm )
6。 可以运行java -jar hello.jar。
Java中如何打jar包
你听说过jar文件吗,没有? 或者陌生人! 是的,没关系。 这是我们的第一站。 打包后发表。
为什么会有这样的东西呢? 首先,这是jar的全名。 javaTMarchive(jar )文件,是的,Java归档文件。 这类似于zip文件。 想想它是用来做什么的。 压缩! 是的。 是压缩,放下我们曾经零散的东西,进行重组。 所有这些目的只有一个。 方便。 好了,不管他是怎么压缩的。 我们的重点是什么是我们压缩的(输入),以及压缩为什么(输出),然后将其公开(部署)。
我们的输入(要压缩的)主要是class文件,还有辅助资源。 其中可能有图像、jsp文件、html文件等。 Jar技术在JDK 1.1版中已经存在,并增强到1.2版。 接下来谈谈jar的好处吧。 这是官方的记述。 安全、快速下载、压缩包、打包、版本化包、可携带。
说了这么多,我们现在开始实施。
首先在命令提示符下(win2000或执行框中)运行cmd命令。 win98是DOS提示符。 (如果您的磁盘已经有jdk1.1或更高版本(如果您键入“jar Chelp”,然后返回汽车) )。
用法: 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的归档文件中:
jarcvfclasses.jar foo.classbar.class
例2 )将foo/目录中的所有文件归档到名为classes.jar的归档文件中(在现有清单(manifest )文件(mymanifest )中) :
是jarcvfmclasses.jar my manifest-cfoo /。
举个例子:
我们只有一个赫尔洛魔兽。 如下所示。
公共班级健康世界{
publicstaticvoidmain (字符串[ ] args ) {
system.out.println(‘hi,Hello World!’ );
}
}
将此java文件保存到c驱动器和目录中。 好的,接下来,
在之前打开的命令提示符下,键入javac HelloWorld.java,然后键入jarcvfhello.jar hello world.class。 回到车上后去CD看看吧。 有什么多,肯定是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.0Created-By: 1.4.2 (Sun Microsystems Inc.)Main-Class: HelloWorld
接下来,我们在命令提示符里执行:jar umf MANIFEST.MF 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:
<?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>
在命令提示符下进到先前创制的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,有了吗?
最后,如果你想用ant来完成以上的打包活动,下面就告诉你:
对于jar来说。在build.xml中,
<target name=”jar”> <jar destfile=”${app_home}/hello.jar”> <fileset dir=”${dest}” includes=”**”/> <!–fileset dir=”${dest}” includes=”**/action.properties”/–> </jar> </target>
对于war,
<war warfile=”hello.war” webxml=”./WEB-INF/web.xml”> <fileset dir=”html”/> <lib dir=”lib/”> <exclude name=”oracle*.jar”/> </lib> <classes dir=”build/servlets”> <include name=”**/*.class”/> </classes> </war>
好了,就这么多,希望对你有点帮助。:)
补充:
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 害羞的煎蛋/yahh害羞的煎蛋.txt(仅提取目录害羞的煎蛋下的文件yahh害羞的煎蛋.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.