[quote]将CLASS文件打包成JAR文件?[/quote]
一:简单的打包:


先将要打包的文件整理好,拷贝到一个目录中。然后打开命令行窗口,进入到这个目录下面,执行以下命令即可:

jar cvf SanyDemo.war */.

这里指定文件名为SanyDemo.war,“*/.”表示要打包的文件为当前目录下的所有文件。

用法: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
选项包括:
    -c  创建新的归档文件
    -t  列出归档目录
    -x  解压缩已归档的指定(或所有)文件
    -u  更新现有的归档文件
    -v  在标准输出中生成详细输出
    -f  指定归档文件名
    -m  包含指定清单文件中的清单信息
    -e  为捆绑到可执行 jar 文件的独立应用程序
        指定应用程序入口点
    -0  仅存储;不使用任何 ZIP 压缩
    -M  不创建条目的清单文件
    -i  为指定的 jar 文件生成索引信息
    -C  更改为指定的目录并包含其中的文件
如果有任何目录文件,则对其进行递归处理。
清单文件名、归档文件名和入口点名的指定顺序
与 "m"、"f" 和 "e" 标志的指定顺序相同。

示例 1:将两个类文件归档到一个名为 classes.jar 的归档文件中:
       jar cvf classes.jar Foo.class Bar.class
示例 2:使用现有的清单文件 "mymanifest" 并
           将 foo/ 目录中的所有文件归档到 "classes.jar" 中:
       jar cvfm classes.jar mymanifest -C foo/ .





二:使用Eclipse 打包应注意的问题




如果项目有依赖的jar,那么要注意:


可把jar包打到War包里,但jar包不能打到Jar包里去。


“MANIFEST.MF”文件内容


Manifest-Version: 1.0


Main-Class:A


Class-Path: lib/commonsapi.jar



假设打包后名为A.jar



然后整理成如下目录结构


A.jar


lib


-commonsapi.jar



将所有依赖包都放入lib文件夹中,双击A.jar,程序就可以运行了。







三:打包成WAR文件:



在CMD下,当我们敲下jar -help时,系统给我们提供了如下的jar命令以及jar打包:



用法: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-


s ...


选项包括:


-c 创建新的归档文件


-t 列出归档目录


-x 解压缩已归档的指定(或所有)文件


-u 更新现有的归档文件


-v 在标准输出中生成详细输出


-f 指定归档文件名


-m 包含指定清单文件中的清单信息


-e 为捆绑到可执行 jar 文件的独立应用程序


指定应用程序入口点


-0 仅存储;不使用任何 ZIP 压缩


-M 不创建条目的清单文件


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


-C 更改为指定的目录并包含其中的文件


如果有任何目录文件,则对其进行递归处理。


清单文件名、归档文件名和入口点名的指定顺序


与 "m"、"f" 和 "e" 标志的指定顺序相同。



示例 1:将两个类文件归档到一个名为 classes.jar 的归档文件中:


jar cvf classes.jar Foo.class Bar.class


示例 2:使用现有的清单文件 "mymanifest" 并


将 foo/ 目录中的所有文件归档到 "classes.jar" 中:


jar cvfm classes.jar mymanifest -C foo/ .



现在我们用jar命令来进行war打包:



运行cmd 进入命令提示行,定位到工程的路径,如你工程名是"classes" 放在d盘要路径下,



你就可以运行到d:\classes



然后运行Jar cvf classes.war */ . (此处有一个点,包含了此文件夹下的所有文件)即可。



“D:\JCY2007>d:\java1.5\bin\jar cvf JCY2007.war *”把D:/JCY2007目录下所有的文件都打包到JCY2007.WAR中




Java下的一个简单易用的反编译工具jad, 可以很方便的将.class反编译为.Java. 点击下载



[quote]一、基本用法


Usage:jad [option(s)]


直接输入类文件名,且支持通配符



二、Option -o


不提示,覆盖源文件



三、Option -s


反编译结果以.Java为扩展名。



四、Option -p


将反编译结果输出到屏幕




将反编译结果重定向到文件


[quote]c:\Java\>jad -p example1.class>example1.Java [/quote]



五、Option -d


指定反编译的输出文件目录




六、Option -r


按*.class的包结构输出文件目录 [/quote]



[quote][b] 


实例[/b][/quote]



以下假设jad.exe在c:\java目录下



一、基本用法


Usage:jad [option(s)]


直接输入类文件名,且支持通配符,如下所示。


c:\java\>jad example1.class 
c:\java\>jad *.class

结果是将example1.class反编译为example1.jad。将example1.jad改为example1.java即得源文件。



二、Option -o


不提示,覆盖源文件



三、Option -s


c:\java\>jad -sjava example1.class

反编译结果以.java为扩展名。



四、Option -p


将反编译结果输出到屏幕


c:\java\>jad -p example1.class

将反编译结果重定向到文件


[quote]c:\java\>jad -p example1.class>example1.java [/quote]



五、Option -d


指定反编译的输出文件目录


c:\java\>jad -o -dtest -sjava *.class




六、Option -r


按*.class的包结构输出文件目录


c:\java\>jad -o -r -dtest -sjava d:/1/**/*.class

将d:\1\文件夹下的.class文件按照原程序的包结构反编译到test目录下。




[quote]在C:\java下有两个文件夹,一个是Class文件夹,用于存放.Class文件;一个是src文件夹,用来存放编译好的源文件。可以在cmd下任意目录位置执行以下命令:




c:\>jad -o -r -d c:\java\src -sjava c:\java\class\**\*.class




命令解释:
         -o :不提示,覆盖源文件
         -r :按*.class的包结构输出文件目录 
         -d :指定反编译的输出文件目录
         -sjava :反编译结果以.java为扩展名。 
     这条命令的作用就是:将c:\java\class\**\*.class中的(两颗接连的星,表示任意层次的子目录。)所有目录下的.Class文件 进行反编译,并将其后缀以.java命名(-sjava),按原来的包结构(-r)放到(-d)C:\java\src下
.

[/quote]