??xml version="1.0" encoding="utf-8" standalone="yes"?>国产亚洲精品资在线,国产亚洲色婷婷久久99精品91,国产亚洲精品仙踪林在线播放http://www.tkk7.com/yrj11320/category/3859.html天生我才必有用,千金散尽q复来! zh-cnWed, 28 Feb 2007 03:25:23 GMTWed, 28 Feb 2007 03:25:23 GMT60JAR文g包及jar命o详解 http://www.tkk7.com/yrj11320/archive/2005/10/16/15647.html不胖用砖?/dc:creator>不胖用砖?/author>Sun, 16 Oct 2005 08:27:00 GMThttp://www.tkk7.com/yrj11320/archive/2005/10/16/15647.htmlhttp://www.tkk7.com/yrj11320/comments/15647.htmlhttp://www.tkk7.com/yrj11320/archive/2005/10/16/15647.html#Feedback1http://www.tkk7.com/yrj11320/comments/commentRss/15647.htmlhttp://www.tkk7.com/yrj11320/services/trackbacks/15647.html常常在网上看到有问:如何?nbsp;java E序~译?nbsp;.exe 文g。通常回答只有两种Q一U是制作一个可执行?nbsp;JAR 文g包,然后可以像.chm 文一样双击运行了Q而另一U是使用 JET 来进?nbsp;~译。但?nbsp;JET 是要用钱买的Q而且据说 JET 也不是能把所有的 Java E序都编译成执行文gQ性能也要打些折扣。所以,使用制作可执?nbsp;JAR 文g包的Ҏ是最佳选择了,何况它还能保?nbsp;Java 的跨q_Ҏ?BR>  下面来看看什么是 JAR 文g包吧Q?nbsp;

  1. JAR 文g?nbsp;

  JAR 文g是 Java Archive FileQ顾名思意Q它的应用是?nbsp;Java 息息相关的,?nbsp;Java 的一U文格式。JAR 文g非常cM ZIP 文g??准确的说Q它是 ZIP 文gQ所以叫它文件包。JAR 文g?nbsp;ZIP 文g唯一的区别就是在 JAR 文g的内容中Q包含了一?nbsp;META-INF/MANIFEST.MF 文gQ这个文件是在生?nbsp;JAR 文g的时候自动创建的。D个例子,如果我们h如下目录l构的一些文Ӟ 

  == 

  `-- test 

    `-- Test.class 

  把它压羃?nbsp;ZIP 文g test.zipQ则q个 ZIP 文g的内部目录结构ؓQ?nbsp;

  test.zip 

  `-- test 

    `-- Test.class 

  如果我们使用 JDK ?nbsp;jar 命o把它打成 JAR 文g?nbsp;test.jarQ则q个 JAR 文g的内部目录结构ؓQ?nbsp;

  test.jar 

  |-- META-INF 

  |  `-- MANIFEST.MF 

  `-- test 

    `--Test.class 

  2. 创徏可执行的 JAR 文g?nbsp;

  制作一个可执行?nbsp;JAR 文g包来发布你的E序?nbsp;JAR 文g包最典型的用法?nbsp;

  Java E序是由若干?nbsp;.class 文gl成的。这?nbsp;.class 文g必须Ҏ它们所属的包不同而分U分目录存放Q运行前需要把所有用到的包的根目录指定给 CLASSPATH 环境变量或?nbsp;java 命o?nbsp;-cp 参数Q运行时q要到控制台下去使用 java 命o来运行,如果需要直接双击运行必d Windows 的批处理文g (.bat) 或?nbsp;Linux ?nbsp;Shell E序。因此,许多QJava 是一U方便开发者苦了用LE序设计语言?nbsp;

  其实不然Q如果开发者能够制作一个可执行?nbsp;JAR 文g包交l用P那么用户使用h方便了。在 Windows 下安?nbsp;JRE (Java Runtime Environment) 的时候,安装文g会将 .jar 文g映射l?nbsp;javaw.exe 打开。那么,对于一个可执行?nbsp;JAR 文g包,用户只需要双d可以运行程序了Q和阅读 .chm 文一h?nbsp;(.chm 文默认是由 hh.exe 打开?。那么,现在的关键,是如何来创个可执行?nbsp;JAR 文g包?nbsp;

  创徏可执行的 JAR 文g包,需要用带 cvfm 参数?nbsp;jar 命oQ同样以上述 test 目录ZQ命令如下: 

jar cvfm test.jar manifest.mf test 

  q里 test.jar ?nbsp;manifest.mf 两个文gQ分别是对应的参?nbsp;f ?nbsp;mQ其重头戏在 manifest.mf。因创徏可执行的 JAR 文g包,光靠指定一?nbsp;manifest.mf 文g是不够的Q因?nbsp;MANIFEST ?nbsp;JAR 文g包的特征Q可执行?nbsp;JAR 文g包和不可执行?nbsp;JAR 文g包都包含 MANIFEST。关键在于可执行 JAR 文g包的 MANIFESTQ其内容包含?nbsp;Main-Class 一V这?nbsp;MANIFEST 中书写格式如下: 

  Main-Class: 可执行主cd?包含包名) 

  例如Q假设上例中?nbsp;Test.class 是属?nbsp;test 包的Q而且是可执行的类 (定义?nbsp;public static void main(String[]) Ҏ)Q那么这?nbsp;manifest.mf 可以~辑如下Q?nbsp;

Main-Class: test.Test <回R> 

  q个 manifest.mf 可以攑֜M位置Q也可以是其它的文g名,只需要有 Main-Class: test.Test 一行,且该行以一个回车符l束卛_。创Z manifest.mf 文g之后Q我们的目录l构变ؓQ?nbsp;

  == 

  |-- test 

  |  `-- Test.class 

  `-- manifest.mf 

  q时候,需要到 test 目录的上U目录中M?nbsp;jar 命o来创?nbsp;JAR 文g包。也是在目录树中用?=”表C的那个目录中,使用如下命oQ?nbsp;

jar cvfm test.jar manifest.mf test 

  之后在?=”目录中创徏?nbsp;test.jarQ这?nbsp;test.jar 是执行?nbsp;JAR 文g包。运行时只需要?nbsp;java -jar test.jar 命o卛_?nbsp;

  需要注意的是,创徏?nbsp;JAR 文g包中需要包含完整的、与 Java E序的包l构对应的目录结构,像上例一栗?nbsp;Main-Class 指定的类Q也必须是完整的、包含包路径的类名,如上例的 test.TestQ而且在没有打?nbsp;JAR 文g包之前可以?nbsp;java <cd> 来运行这个类Q即在上例中 java test.Test 是可以正运行的 (当然要在 CLASSPATH 正确的情况下)?BR>
  3. jar 命o详解 

  jar 是随 JDK 安装的,?nbsp;JDK 安装目录下的 bin 目录中,Windows 下文件名?nbsp;jar.exeQLinux 下文件名?nbsp;jar。它的运行需要用?nbsp;JDK 安装目录?nbsp;lib 目录中的 tools.jar 文g。不q我们除了安?nbsp;JDK 什么也不需要做Q因?nbsp;SUN 已经帮我们做好了。我们甚至不需要将 tools.jar 攑ֈ CLASSPATH 中?nbsp;

  使用不带M?nbsp;jar 命o我们可以看到 jar 命o的用法如下: 

  jar {ctxu}[vfm0M] [jar-文g] [manifest-文g] [-C 目录] 文g?nbsp;... 

  其中 {ctxu} ?nbsp;jar 命o的子命oQ每?nbsp;jar 命o只能包含 ctxu 中的一个,它们分别表示Q?nbsp;

   -c 创徏新的 JAR 文g?nbsp;

   -t 列出 JAR 文g包的内容列表 

   -x 展开 JAR 文g包的指定文g或者所有文?nbsp;

   -u 更新已存在的 JAR 文g?nbsp;(d文g?nbsp;JAR 文g包中) 

     [vfm0M] 中的选项可以任选,也可以不选,它们?nbsp;jar 命o的选项参数 

   -v 生成详细报告q打印到标准输出 

   -f 指定 JAR 文g名,通常q个参数是必ȝ 

   -m 指定需要包含的 MANIFEST 清单文g 

   -0 只存储,不压~,q样产生?nbsp;JAR 文g包会比不用该参数产生的体U大Q但速度更快 

   -M 不生所有项的清单(MANIFEST〕文Ӟ此参C忽略 -m 参数 

     [jar-文g] 即需要生成、查看、更新或者解开?nbsp;JAR 文g包,它是 -f 参数的附属参?nbsp;

     [manifest-文g] ?nbsp;MANIFEST 清单文gQ它?nbsp;-m 参数的附属参?nbsp;

     [-C 目录] 表示转到指定目录下去执行q个 jar 命o的操作。它相当于先使用 cd 命o转该目录下再执行不带 -C 参数?nbsp;jar 命oQ它只能在创建和更新 JAR 文g包的时候可用。   

  文g?nbsp;... 指定一个文?目录列表Q这些文?目录是要添加到 JAR 文g包中的文?目录。如果指定了目录Q那?nbsp;jar 命o打包的时候会自动把该目录中的所有文件和子目录打入包中?nbsp;

  下面举一些例子来说明 jar 命o的用法: 

  1) jar cf test.jar test 

  该命令没有执行过E的昄Q执行结果是在当前目录生成了 test.jar 文g。如果当前目录已l存?nbsp;test.jarQ那么该文g被覆盖?nbsp;

  2) jar cvf test.jar test 

  该命令与上例中的l果相同Q但是由?nbsp;v 参数的作用,昄Z打包q程Q如下: 

  标明清单(manifest) 

  增加Qtest/(d= 0) (写出= 0)(存储?nbsp;0%) 

  增加Qtest/Test.class(d= 7) (写出= 6)(压羃?nbsp;14%) 

  3) jar cvfM test.jar test 

  该命令与 2) l果cMQ但在生成的 test.jar 中没有包?nbsp;META-INF/MANIFEST 文gQ打包过E的信息也略有差别: 

  增加Qtest/(d= 0) (写出= 0)(存储?nbsp;0%) 

  增加Qtest/Test.class(d= 7) (写出= 6)(压羃?nbsp;14%) 

  4) jar cvfm test.jar manifest.mf test 

  q行l果?nbsp;2) 怼Q显CZ息也相同Q只是生?nbsp;JAR 包中?nbsp;META-INF/MANIFEST 内容不同Q是包含?nbsp;manifest.mf 的内?nbsp;

  5) jar tf test.jar 

  ?nbsp;test.jar 已经存在的情况下Q可以查?nbsp;test.jar 中的内容Q如对于 2) ?nbsp;3) 生成?nbsp;test.jar 分别应该此命令,l果如下Q?nbsp;

  对于 2) 

  META-INF/ 

  META-INF/MANIFEST.MF 

  test/ 

  test/Test.class 

  对于 3) 

  test/ 

  test/Test.class 

  6) jar tvf test.jar 

  除显C?nbsp;5) 中显C的内容外,q包括包内文件的详细信息Q如Q?nbsp;

  0 Wed Jun 19 15:39:06 GMT 2002 META-INF/ 

  86 Wed Jun 19 15:39:06 GMT 2002 META-INF/MANIFEST.MF 

  0 Wed Jun 19 15:33:04 GMT 2002 test/ 

  7 Wed Jun 19 15:33:04 GMT 2002 test/Test.class 

  7) jar xf test.jar 

  解开 test.jar 到当前目录,不显CZQ何信息,对于 2) 生成?nbsp;test.jarQ解开后的目录l构如下Q?nbsp;

  == 

  |-- META-INF 

  |  `-- MANIFEST 

  `-- test 

    `--Test.class 

jar xvf test.jar 

  q行l果?nbsp;7) 相同Q对于解压过E有详细信息昄Q如Q?nbsp;

  创徏QMETA-INF/ 

  展开QMETA-INF/MANIFEST.MF 

  创徏Qtest/ 

  展开Qtest/Test.class 

  9) jar uf test.jar manifest.mf 

  ?nbsp;test.jar 中添加了文g manifest.mfQ此使用 jar tf 来查?nbsp;test.jar 可以发现 test.jar 中比原来多了一?nbsp;manifest。这里顺便提一下,如果使用 -m 参数q指?nbsp;manifest.mf 文gQ那?nbsp;manifest.mf 是作为清单文?nbsp;MANIFEST 来用的Q它的内容会被添加到 MANIFEST 中;但是Q如果作Z般文件添加到 JAR 文g包中Q它跟一般文件无异?nbsp;

  10) jar uvf test.jar manifest.mf 

  ?nbsp;9) l果相同Q同时有详细信息昄Q如Q?nbsp;

  增加Qmanifest.mf(d= 17) (写出= 19)(压羃?nbsp;-11%) 

  4. 关于 JAR 文g包的一些技?nbsp;

  1) 使用 unzip 来解?nbsp;JAR 文g 

  在介l?nbsp;JAR 文g的时候就已经说过了,JAR 文g实际上就?nbsp;ZIP 文gQ所以可以用常见的一些解?nbsp;ZIP 文g的工h解压 JAR 文gQ如 Windows 下的 WinZip、WinRAR {和 Linux 下的 unzip {。?nbsp;WinZip ?nbsp;WinRAR {来解压是因为它们解压比较直观,方便。而?nbsp;unzipQ则是因为它解压时可以?nbsp;-d 参数指定目标目录?nbsp;

  在解压一?nbsp;JAR 文g的时候是不能使用 jar ?nbsp;-C 参数来指定解压的目标的,因ؓ -C 参数只在创徏或者更新包的时候可用。那么需要将文g解压到某个指定目录下的时候就需要先这?nbsp;JAR 文g拯到目标目录下Q再q行解压Q比较麻烦。如果?nbsp;unzipQ就不需要这么麻烦了Q只需要指定一?nbsp;-d 参数卛_。如Q?nbsp;

  unzip test.jar -d dest/ 

  2) 使用 WinZip 或?nbsp;WinRAR {工具创?nbsp;JAR 文g 

  上面提到 JAR 文g是包含?nbsp;META-INF/MANIFEST ?nbsp;ZIP 文gQ所以,只需要?nbsp;WinZip、WinRAR {工具创建所需?nbsp;ZIP 压羃包,再往q个 ZIP 压羃包中d一个包?nbsp;MANIFEST 文g?nbsp;META-INF 目录卛_。对于?nbsp;jar 命o?nbsp;-m 参数指定清单文g的情况,只需要将q个 MANIFEST 按需要修改即可?nbsp;

  3) 使用 jar 命o创徏 ZIP 文g 

  有些 Linux 下提供了 unzip 命oQ但没有 zip 命oQ所以需要可以对 ZIP 文gq行解压Q即不能创徏 ZIP 文g。如要创Z?nbsp;ZIP 文gQ用带 -M 参数?nbsp;jar 命o卛_Q因?nbsp;-M 参数表示制作 JAR 包的时候不d MANIFEST 清单Q那么只需要在指定目标 JAR 文g的地方将 .jar 扩展名改?nbsp;.zip 扩展名,创徏的就是一个不折不扣的 ZIP 文g了,如将上一节的W?nbsp;3) 个例子略作改动: 

  jar cvfM test.zip test 


]]>
jndi数据库连接方?http://www.tkk7.com/yrj11320/archive/2005/10/16/15632.html不胖用砖?/dc:creator>不胖用砖?/author>Sun, 16 Oct 2005 06:13:00 GMThttp://www.tkk7.com/yrj11320/archive/2005/10/16/15632.htmlhttp://www.tkk7.com/yrj11320/comments/15632.htmlhttp://www.tkk7.com/yrj11320/archive/2005/10/16/15632.html#Feedback0http://www.tkk7.com/yrj11320/comments/commentRss/15632.htmlhttp://www.tkk7.com/yrj11320/services/trackbacks/15632.html阅读全文

]]>
վ֩ģ壺 Ů˱ŮˬƵ| þwwƷw˳| ձƬѹۿ| ޾ƷһۺAV| ƷƵվ| ɫۼۺ| ˳վ߹ۿ10| һ| ҳվ߹ۿ| ŷ Ƶ С˵| պëƬƵ| Avۺ辫Ʒ| ޾Ʒþþ| Ƶ| ۺ뾫Ʒ | ҹAV| ޸AVľƷԭ| պӰ߹ۿ| ֻĻ| ȾѾƷ| 99Ʒһ| ޾Ʒٸ30p| ƵѴȫϼ| һ| ޾Ʒ岻| һƬaѲſ| ޹һ| ƵƷ| 91µַ| ˾þô߽ڹ | ˳վ߹ۿ10| ¾þþƷ| ˳վӰȷ沥| ˬˬˬƵ | ձvaһ| jlzzjlzz߲| ѹۿ| Ƶ| 鶹avŮһ| ĻӰӾƷ| ޹ƷƵ|