将CLASS文件生成JAR文件

合集下载

怎么把Java .class文件打成jar包?

怎么把Java .class文件打成jar包?

怎么把Java.class文件打成jar包?方法1:在Eclipse中可以导出JAR文件(类似于EXE文件,不过需要JAVA虚拟机支持),执行File→Export→JAR(Runable)即可。

eclipse-->右键单击一个Java Project-->Export-->Java-JARfile/Runnable JAR file//也可以是Project下的一个Package方法2:jar命令:示例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/.jar用法:jar{ctxu}[vfm0Mi][jar-文件][manifest-文件][-C目录]文件名...选项:-c创建新的存档-t列出存档内容的列表-x展开存档中的命名的(或所有的〕文件-u更新已存在的存档-v生成详细输出到标准输出上-f指定存档文件名-m包含来自标明文件的标明信息-0只存储方式;未用ZIP压缩格式-M不产生所有项的清单(manifest〕文件-i为指定的jar文件产生索引信息-C改变到指定的目录,并且包含下列文件:如果一个文件名是一个目录,它将被递归处理。

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

【Java】class.jar和sources.jar及javadoc.jar三种jar包

【Java】class.jar和sources.jar及javadoc.jar三种jar包

【Java】class.jar和sources.jar及javadoc.jar三种jar包⼀、普及jar包知识 例如(举例⼦解释)类⽂件(.class) test-java-1.0-SNAPSHOT.jar⽂档包(API) test-java-1.0-SNAPSHOT-javadoc.jar资源包(code) test-java-1.0-SNAPSHOT-sources.jar⼆、使⽤⽅法1.类⽂件(.class) test-java-1.0-SNAPSHOT.jar 反编译,最暴⼒直接的⽅法,将jar包拖进IDEA⾥查看2.⽂档包(API) test-java-1.0-SNAPSHOT-javadoc.jar 解压该⽂件,打开index.html查看3.资源包 test-java-1.0-SNAPSHOT-sources.jar 拖进IDEA直接查看⼆、⽣成⽅法1.类⽂件(.class) test-java-1.0-SNAPSHOT.jar 直接使⽤maven打包⽣成即可2.⽂档包(API) test-java-1.0-SNAPSHOT-javadoc.jar 使⽤ maven-javadoc-plugin 插件⽣成javadoc.jar3.资源包 test-java-1.0-SNAPSHOT-sources.jar 使⽤ maven-source-plugin 插件⽣成sources.jar完整pom⽂件如下:1<?xml version="1.0" encoding="UTF-8"?>2<project xmlns="/POM/4.0.0"3 xmlns:xsi="/2001/XMLSchema-instance"4 xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">5<modelVersion>4.0.0</modelVersion>67<groupId>com.test</groupId>8<artifactId>test-java</artifactId>9<version>1.0-SNAPSHOT</version>10<dependencies>11<dependency>12<groupId>junit</groupId>13<artifactId>junit</artifactId>14<version>4.12</version>15<scope>compile</scope>16</dependency>17</dependencies>1819<build>2021<plugins>22<plugin>23<!-- Maven 编译插件24指定maven编译的jdk版本,如果不指定,25 maven3默认⽤jdk 1.5 maven2默认⽤jdk1.3 -->26<groupId>org.apache.maven.plugins</groupId>27<artifactId>maven-compiler-plugin</artifactId>28<version>3.8.1</version>29<configuration>30<!-- ⼀般⽽⾔,target与source是保持⼀致的,但是,有时候为了让程序能在其他版本的jdk中运⾏(对于低版本⽬标jdk,源代码中不能使⽤低版本jdk中不⽀持的语法),会存在target不同于source的情况 --> 31<source>1.8</source><!-- 源代码使⽤的JDK版本 -->32<target>1.8</target><!-- 需要⽣成的⽬标class⽂件的编译版本 -->33<encoding>UTF-8</encoding><!-- 字符集编码 -->34<verbose>true</verbose>35<showWarnings>true</showWarnings>36<fork>true</fork><!-- 要使compilerVersion标签⽣效,还需要将fork设为true,⽤于明确表⽰编译版本配置的可⽤ -->37<executable><!-- path-to-javac --></executable><!-- 使⽤指定的javac命令,例如:<executable>${JAVA_1_4_HOME}/bin/javac</executable> -->38<compilerVersion>1.3</compilerVersion><!-- 指定插件将使⽤的编译器的版本 -->39<meminitial>128m</meminitial><!-- 编译器使⽤的初始内存 -->40<maxmem>512m</maxmem><!-- 编译器使⽤的最⼤内存 -->41<!-- <compilerArgument>-verbose -bootclasspath ${java.home}\lib\rt.jar</compilerArgument>&lt;!&ndash; 这个选项⽤来传递编译器⾃⾝不包含但是却⽀持的参数选项 &ndash;&gt;-->42</configuration>43</plugin>4445<!-- ⽣成javadoc⽂档包的插件 -->46<plugin>47<groupId>org.apache.maven.plugins</groupId>48<artifactId>maven-javadoc-plugin</artifactId>49<version>3.2.0</version>50<executions>51<execution>52<id>attach-javadocs</id>53<goals>54<goal>jar</goal>55</goals>56</execution>57</executions>58</plugin>5960<!-- ⽣成sources源码包的插件 -->61<plugin>62<groupId>org.apache.maven.plugins</groupId>63<artifactId>maven-source-plugin</artifactId>64<version>3.2.1</version>65<configuration>66<attach>true</attach>67</configuration>68<executions>69<execution>70<!-- 在package阶段之后会执⾏源代码打包 -->71<phase>package</phase>72<goals>73<goal>jar-no-fork</goal>74</goals>75</execution>76</executions>77</plugin>78</plugins>79</build>8081</project>配置好插件后,使⽤maven package命令既能在target⽬录中查看到三个jar包 命令:mvn package如果要把三种jar包安装到本地仓库 命令:mvn install如果要把三种jar包发布到远程仓库 命令:mvn deploy。

java 压缩命令jar

java  压缩命令jar

java 压缩命令jarjar工具是个java应用程序,可将多个文件合并为单个JAR归档文件。

jar是个多用途的存档及压缩工具,它基于ZIP和ZLIB压缩格式。

然而,设计jar的主要目的是便于将java Applet或应用程序打包成单个归档文件。

将Java Applet或应用程序的组件(.class 文件、图像和声音)合并成单个归档文件时,可以通过浏览器等进行下载,这大大缩短了下载时间。

jar还能压缩文件,从而进一步提高了下载速度。

jar [命令选项] [manifest] destination input-file [input-files]其命令选项的详细参数如下:● c 在标准输出上创建新归档或空归档。

●t 在标准输出上列出内容表。

●x[file] 从标准输入提取所有文件,或只提取指定的文件。

如果省略了file,则提取所有文件;否则只提取指定文件。

● f 第二个参数指定要处理的jar文件。

在c(创建)情形中,第二个参数指的是要创建的jar文件的名称(不是在标准输出上)。

在t或x(表或抽取)这两种情形中,x指定要列出或抽取的jar文件。

●v 在标准错误输出设备上生成长格式的输出结果。

●m 包括指定的现有清单文件中的清单信息,如“jar cmf myManifestFile myJarFile*.class”。

●O 只储存,不进行ZIP压缩。

●M 不创建项目的清单文件。

●u 通过添加文件或更改清单来更新现有的JAR文件,如“jar -uf foo.jar foo.class”将文件foo.class添加到现有的JAR文件foo.jar中;而“jar umf manifest foo.jar”则用manifest中的信息更新foo.jar的清单。

● C 在执行jar命令期间更改目录,如“jar -uf foo.jar -C classes *”将classes目录内的所有文件加到foo.jar中,但不添加类目录本身。

ECLIPSE将引用了第三方JAR包的JAVA项目打包成JAR文件的两种方法

ECLIPSE将引用了第三方JAR包的JAVA项目打包成JAR文件的两种方法

ECLIPSE将引用了第三方JAR包的JAVA项目打包成JAR文件的两种方法在Eclipse中,我们可以使用两种方法将引用了第三方JAR包的Java项目打包成JAR文件。

下面将详细介绍这两种方法。

方法一:使用Eclipse自带的导出功能1. 在Eclipse中,右键单击项目,选择"Export"。

2. 在弹出的对话框中,选择"Java"下的"JAR file",然后点击"Next"。

3. 在"JAR File Specification"页面上,选择要导出的项目以及要导出的资源;在"Export destination"中,指定导出的JAR文件的保存路径和文件名。

4. 在"JAR Packaging Options"页面上,选择"Export generated class files and resources",确保要导出的类文件和资源都被包含在JAR文件中。

5. 在"Select the export destination"页面上,选择"Package required libraries into generated JAR",这将会将所需的第三方JAR包也包含在生成的JAR文件中。

6. 点击"Finish"完成导出。

这种方法的优点是简单快捷,只需要几个简单的步骤就可以完成打包。

但是缺点是生成的JAR文件会将第三方JAR包也放在同一个目录下,可能导致文件夹混乱。

方法二:使用Apache Maven插件打包1. 首先,确保你的项目中存在pom.xml文件,它描述了项目的依赖关系和构建配置。

2. 打开Eclipse的"Terminal"窗口,或者使用其他的命令行工具。

java打jar包的几种方式详解

java打jar包的几种方式详解

java打jar包的⼏种⽅式详解⼀、制作只含有字节码⽂件的jar包我们先来看只含有字节码⽂件,即只含有class⽂件的jar包怎么制作,这是最简单的形式1、最简单的jar包——直接输出hello最终⽣成的jar包结构META-INFHello.class⽅法步骤(1)⽤记事本写⼀个Hello.java的⽂件class Hello{public static void main(String[] agrs){System.out.println("hello");}}(2)⽤命令⾏进⼊到该⽬录下,编译这个⽂件 javac Hello.java(3)将编译后的Hello.class⽂件打成jar包 jar -cvf hello.jar Hello.class c表⽰要创建⼀个新的jar包,v表⽰创建的过程中在控制台输出创建过程的⼀些信息,f表⽰给⽣成的jar包命名(4)运⾏jar包 java -jar hello.jar 这时会报如下错误 hello.jar中没有主清单属性 添加Main-Class属性 ⽤压缩软件打开hello.jar,会发现⾥⾯多了⼀个META-INF⽂件夹,⾥⾯有⼀个MENIFEST.MF的⽂件,⽤记事本打开Manifest-Version: 1.0Created-By: 1.8.0_121 (Oracle Corporation) 在第三⾏的位置写⼊ Main-Class: Hello (注意冒号后⾯有⼀个空格,整个⽂件最后有⼀⾏空⾏),保存 再次运⾏ java -jar hello.jar ,此时成功在控制台看到 hello ,成功2、含有两个类的jar包——通过调⽤输出hello最终⽣成的jar包结构META-INFTom.classHello.class⽅法步骤(1)⽤记事本写⼀个Hello.java和⼀个Tom.java的⽂件 ⽬的是让Hello调⽤Tom的speak⽅法class Hello{public static void main(String[] agrs){Tom.speak();}}class Tom{public static void speak(){System.out.println("hello");}}(2)编译: javac Hello.java 此时Hello.java和Tom.java同时被编译,因为Hello中调⽤了Tom,在编译Hello的过程中发现还需要编译Tom(3)打jar包,这次我们换⼀种⽅式直接定义Main-Class。

idea class文件反编译

idea class文件反编译

Idea Class文件反编译1. 什么是Class文件反编译Class文件反编译是指将Java字节码文件(.class文件)转换回Java源代码的过程。

Java源代码在编译时会被编译器转换成字节码,然后在Java虚拟机(JVM)上执行。

但是,由于字节码是一种中间语言,无法直接阅读和理解,因此有时需要将其还原为可读的Java源代码。

Class文件反编译可以帮助开发人员理解和分析已经编译的Java类文件,以及进行代码审查、修复漏洞等工作。

同时,它也可以用于学习和研究其他人的代码,了解其实现细节和设计思路。

2. Class文件反编译工具目前市面上有许多Class文件反编译工具可供选择。

其中比较知名的包括以下几种:•JD-GUI:JD-GUI 是一个开源的 Java 反编译器,可以将.class 文件转换为可读的 Java 源代码,并提供了图形界面进行操作。

•Jadx:Jadx 是一个基于 Java 的开源反编译工具,可以将 Android APK 文件中的 .class 文件还原为 Java 源代码,并提供命令行和图形界面两种方式。

•FernFlower:FernFlower 是一个开源的 Java 反编译器,可以将.class 文件转换为可读的 Java 源代码,并提供了命令行和图形界面两种方式。

以上工具都具有一定的优势和特点,使用时可以根据个人需求和偏好进行选择。

3. 如何进行Class文件反编译3.1 使用JD-GUI进行Class文件反编译JD-GUI 是一个简单易用的Java反编译工具,可以通过以下步骤进行Class文件反编译:1.下载并安装JD-GUI工具。

2.打开JD-GUI工具,点击菜单栏的“File” -> “Open”,选择要反编译的.class文件。

3.JD-GUI会自动将.class文件转换为可读的Java源代码,并在右侧窗口显示出来。

3.2 使用Jadx进行Class文件反编译Jadx 是一个功能强大的Java反编译工具,可以通过以下步骤进行Class文件反编译:1.下载并安装Jadx工具。

javassist jar 修改 方法

javassist jar 修改 方法

javassist jar 修改方法摘要:1.简介2.javassist 是什么3.如何使用javassist 修改jar 包4.修改方法5.总结正文:1.简介在Java 开发中,我们有时需要对jar 包进行一些修改,例如添加、删除或修改类、方法等。

javassist 是一个Java 字节码修改框架,它可以帮助我们轻松地实现这些操作。

2.javassist 是什么Javassist 是一个强大的Java 字节码修改工具,它可以让Java 程序在运行时动态地修改类和字节码。

它支持对类、方法、字段等进行操作,提供了丰富的API 供开发者使用。

3.如何使用javassist 修改jar 包要使用javassist 修改jar 包,首先需要将jar 包转换为Class 文件,然后使用Javassist 的API 对Class 文件进行修改。

接下来,将修改后的Class 文件重新打包成jar 包。

具体步骤如下:a.将jar 包转换为Class 文件使用`jar2class`工具将jar 包转换为Class 文件,例如:`jar2class -x input.jar output`。

b.使用Javassist 修改Class 文件使用Javassist 的API 对Class 文件进行修改,例如:```javaClassPool pool = new ClassPool();pool.appendClassPath(new File("input.jar"));CtClass ctClass = pool.getCtClass("com.example.ClassName");// 修改方法CtMethod method = ctClass.getDeclaredMethod("methodName");method.setBody("{System.out.println("修改后的方法实现");}");// 添加方法CtMethod newMethod = CtMethod.make(Modifier.PUBLIC, ctClass, "newMethodName", new CtClass[]{}, "{}");ctClass.addMethod(newMethod);// 删除字段ctClass.removeField("fieldName");// 修改字段ctClass.getField("fieldName").setModifiers(Modifier.PRIVATE);// 保存修改后的Class 文件ctClass.writeFile("output.class");```c.将修改后的Class 文件重新打包成jar 包使用`jar`命令将修改后的Class 文件打包成jar 包,例如:`jar cvf output.jar output.class`。

Android打包篇:AndroidStudio将代码打包成jar包教程

Android打包篇:AndroidStudio将代码打包成jar包教程

Android打包篇:AndroidStudio将代码打包成jar包教程⼀、新建⼀个as项⽬,再新建⼀个model模块然后再app中的build.gradle中添加model的依赖。

然后编译项⽬。

⼆、编译完成后,打开model下的build——intermediates——bundles⽬录,⽬录下有两个⽂件夹,debug,default,在default⽂件夹下有⼀个classess.jar,就是编译完成的jar包,这⾥需要主要的是:因为我们使⽤的 as 版本不⼀致,所以会导致classess.jar包的⽬录页会不⼀样,不过最终的⽬录还是在build——intermediates——bundles⽬录下,⼩伙伴们可以在这个⽬录下寻找classess.jar⽂件,确保可以找到这个⽂件之后,再进⾏第三步的操作。

三、在确保classess.jar⽂件存在的情况下,打开model模块的build.gradle⽂件,在⽂件中与android模块中添加如下代码,并编译://Copy类型task makeJar(type: Copy) {//删除存在的delete 'build/libs/mysdk.jar'//设置拷贝的⽂件from('build/intermediates/bundles/default/')//打进jar包后的⽂件⽬录into('build/libs/')//将classes.jar放⼊build/libs/⽬录下//include ,exclude参数来设置过滤//(我们只关⼼classes.jar这个⽂件)include('classes.jar')//重命名rename ('classes.jar', 'mysdk.jar')}makeJar.dependsOn(build)这⾥需要注意:上述代码中from括号中的是你的classess.jar的⽂件⽬录,这⾥贴的是我⾃⼰的⽬录,不同的as版本可能导致⽬录不同,所以⼩伙伴们在⽤的时候直接换成你们⾃⼰的classess.jar路径即可。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

将CLASS文件生成JAR文件常常在网上看到有人询问:如何把java 程序编译成.exe 文件。

通常回答只有两种,一种是制作一个可执行的JAR 文件包,然后就可以像.chm 文档一样双击运行了;而另一种是使用JET 来进行编译。

但是JET 是要用钱买的,而且据说JET 也不是能把所有的Java 程序都编译成执行文件,性能也要打些折扣。

所以,使用制作可执行JAR 文件包的方法就是最佳选择了,何况它还能保持Java 的跨平台特性。

下面就来看看什么是JAR 文件包吧:1. JAR 文件包JAR 文件就是Java Archive File,顾名思意,它的应用是与Java 息息相关的,是Java 的一种文档格式。

JAR 文件非常类似ZIP 文件——准确的说,它就是ZIP 文件,所以叫它文件包。

JAR 文件与ZIP 文件唯一的区别就是在JAR 文件的内容中,包含了一个META-INF/MANIFEST.MF 文件,这个文件是在生成JAR 文件的时候自动创建的。

举个例子,如果我们具有如下目录结构的一些文件:==`-- test`-- Test.class把它压缩成ZIP 文件test.zip,则这个ZIP 文件的内部目录结构为:test.zip`-- test`-- Test.class如果我们使用JDK 的jar 命令把它打成JAR 文件包test.jar,则这个JAR 文件的内部目录结构为:test.jar|-- META-INF|`-- MANIFEST.MF`-- test`--Test.class2. 创建可执行的JAR 文件包制作一个可执行的JAR 文件包来发布你的程序是JAR 文件包最典型的用法。

Java 程序是由若干个 .class 文件组成的。

这些.class 文件必须根据它们所属的包不同而分级分目录存放;运行前需要把所有用到的包的根目录指定给CLASSPA TH 环境变量或者java 命令的-cp 参数;运行时还要到控制台下去使用java 命令来运行,如果需要直接双击运行必须写Windows 的批处理文件(.bat) 或者Linux 的Shell 程序。

因此,许多人说,Java是一种方便开发者苦了用户的程序设计语言。

其实不然,如果开发者能够制作一个可执行的JAR 文件包交给用户,那么用户使用起来就方便了。

在Windows 下安装JRE(Java Runtime Environment) 的时候,安装文件会将.jar 文件映射给javaw.exe 打开。

那么,对于一个可执行的JAR 文件包,用户只需要双击它就可以运行程序了,和阅读.chm 文档一样方便(.chm 文档默认是由hh.exe 打开的)。

那么,现在的关键,就是如何来创建这个可执行的JAR 文件包。

创建可执行的JAR 文件包,需要使用带cvfm 参数的jar 命令,同样以上述test 目录为例,命令如下:jar cvfm test.jar manifest.mf test这里test.jar 和manifest.mf 两个文件,分别是对应的参数 f 和m,其重头戏在manifest.mf。

因为要创建可执行的JAR 文件包,光靠指定一个manifest.mf 文件是不够的,因为MANIFEST 是JAR 文件包的特征,可执行的JAR 文件包和不可执行的JAR 文件包都包含MANIFEST。

关键在于可执行JAR 文件包的MANIFEST,其内容包含了Main-Class 一项。

这在MANIFEST 中书写格式如下:Main-Class: 可执行主类全名(包含包名)例如,假设上例中的Test.class 是属于test 包的,而且是可执行的类(定义了public static void main(String[]) 方法),那么这个manifest.mf 可以编辑如下:Main-Class: test.Test <回车>;这个manifest.mf 可以放在任何位置,也可以是其它的文件名,只需要有Main-Class: test.Test 一行,且该行以一个回车符结束即可。

创建了manifest.mf 文件之后,我们的目录结构变为:==|-- test|`-- Test.class`-- manifest.mf这时候,需要到test 目录的上级目录中去使用jar 命令来创建JAR 文件包。

也就是在目录树中使用“==”表示的那个目录中,使用如下命令:jar cvfm test.jar manifest.mf test之后在“==”目录中创建了test.jar,这个test.jar 就是执行的JAR 文件包。

运行时只需要使用java -jar test.jar命令即可。

需要注意的是,创建的JAR 文件包中需要包含完整的、与Java 程序的包结构对应的目录结构,就像上例一样。

而Main-Class 指定的类,也必须是完整的、包含包路径的类名,如上例的test.Test;而且在没有打成JAR 文件包之前可以使用java <类名>; 来运行这个类,即在上例中java test.Test 是可以正确运行的(当然要在CLASSPATH 正确的情况下)。

3. jar 命令详解jar 是随JDK 安装的,在JDK 安装目录下的bin 目录中,Windows 下文件名为jar.exe,Linux 下文件名为jar。

它的运行需要用到JDK 安装目录下lib 目录中的tools.jar 文件。

不过我们除了安装JDK 什么也不需要做,因为SUN 已经帮我们做好了。

我们甚至不需要将tools.jar 放到CLASSPATH 中。

使用不带任何的jar 命令我们可以看到jar 命令的用法如下:jar {ctxu}[vfm0M] [jar-文件] [manifest-文件] [-C 目录] 文件名...其中{ctxu} 是jar 命令的子命令,每次jar 命令只能包含ctxu 中的一个,它们分别表示:-c创建新的JAR 文件包-t列出JAR 文件包的内容列表-x展开JAR 文件包的指定文件或者所有文件-u更新已存在的JAR 文件包(添加文件到JAR 文件包中)[vfm0M] 中的选项可以任选,也可以不选,它们是jar 命令的选项参数-v生成详细报告并打印到标准输出-f指定JAR 文件名,通常这个参数是必须的-m指定需要包含的MANIFEST 清单文件-0只存储,不压缩,这样产生的JAR 文件包会比不用该参数产生的体积大,但速度更快-M不产生所有项的清单(MANIFEST〕文件,此参数会忽略-m 参数[jar-文件] 即需要生成、查看、更新或者解开的JAR 文件包,它是-f 参数的附属参数[manifest-文件] 即MANIFEST 清单文件,它是-m 参数的附属参数[-C 目录] 表示转到指定目录下去执行这个jar 命令的操作。

它相当于先使用cd 命令转该目录下再执行不带-C 参数的jar 命令,它只能在创建和更新JAR 文件包的时候可用。

文件名... 指定一个文件/目录列表,这些文件/目录就是要添加到JAR 文件包中的文件/目录。

如果指定了目录,那么jar 命令打包的时候会自动把该目录中的所有文件和子目录打入包中。

下面举一些例子来说明jar 命令的用法:1) jar cf test.jar test该命令没有执行过程的显示,执行结果是在当前目录生成了test.jar 文件。

如果当前目录已经存在test.jar,那么该文件将被覆盖。

2) jar cvf test.jar test该命令与上例中的结果相同,但是由于v 参数的作用,显示出了打包过程,如下:标明清单(manifest)增加:test/(读入= 0) (写出= 0)(存储了0%)增加:test/Test.class(读入= 7) (写出= 6)(压缩了14%)3) jar cvfM test.jar test该命令与2) 结果类似,但在生成的test.jar 中没有包含META-INF/MANIFEST 文件,打包过程的信息也略有差别:增加:test/(读入= 0) (写出= 0)(存储了0%)增加:test/Test.class(读入= 7) (写出= 6)(压缩了14%)4) jar cvfm test.jar manifest.mf test运行结果与2) 相似,显示信息也相同,只是生成JAR 包中的META-INF/MANIFEST 内容不同,是包含了manifest.mf 的内容5) jar tf test.jar在test.jar 已经存在的情况下,可以查看test.jar 中的内容,如对于2) 和3) 生成的test.jar 分别应该此命令,结果如下;对于2)META-INF/META-INF/MANIFEST.MFtest/test/Test.class对于3)test/test/Test.class6) jar tvf test.jar除显示5) 中显示的内容外,还包括包内文件的详细信息,如:0 Wed Jun 19 15:39:06 GMT 2002 META-INF/86 Wed Jun 19 15:39:06 GMT 2002 META-INF/MANIFEST.MF0 Wed Jun 19 15:33:04 GMT 2002 test/7 Wed Jun 19 15:33:04 GMT 2002 test/Test.class7) jar xf test.jar解开test.jar 到当前目录,不显示任何信息,对于2) 生成的test.jar,解开后的目录结构如下:==|-- META-INF|`-- MANIFEST`-- test`--Test.class8) jar xvf test.jar运行结果与7) 相同,对于解压过程有详细信息显示,如:创建:META-INF/展开:META-INF/MANIFEST.MF创建:test/展开:test/Test.class9) jar uf test.jar manifest.mf在test.jar 中添加了文件manifest.mf,此使用jar tf 来查看test.jar 可以发现test.jar 中比原来多了一个manifest。

这里顺便提一下,如果使用-m 参数并指定manifest.mf 文件,那么manifest.mf 是作为清单文件MANIFEST 来使用的,它的内容会被添加到MANIFEST 中;但是,如果作为一般文件添加到JAR 文件包中,它跟一般文件无异。

10) jar uvf test.jar manifest.mf与9) 结果相同,同时有详细信息显示,如:增加:manifest.mf(读入= 17) (写出= 19)(压缩了-11%)4. 关于JAR 文件包的一些技巧1) 使用unzip 来解压JAR 文件在介绍JAR 文件的时候就已经说过了,JAR 文件实际上就是ZIP 文件,所以可以使用常见的一些解压ZIP 文件的工具来解压JAR 文件,如Windows 下的WinZip、WinRAR 等和Linux 下的unzip 等。

相关文档
最新文档