主页 > 手机  > 

Java命令行程序实战:javac编译,jar命令,jar包

Java命令行程序实战:javac编译,jar命令,jar包

文章目录 编写Java类文件javac编译jar打包java -jar执行做成bat文件,双击直接运行

编写Java类文件

先写一个类,main()方法里面生成一个UUID,文件命名为UUID.java。

package cn.liberg; import java.util.Random; public class UUID { /** * 将UUID中部分字符随机替换为G-Z * 生成一个HEX大写的密钥 */ public static String generateSecret() { final String s = java.util.UUID.randomUUID().toString(); System.out.println("raw: " + s.toUpperCase()); Random random = new Random(); final char[] chars = s.toCharArray(); for(int i=0;i<12;i++) { int index = random.nextInt(36); if(chars[index] != '-') { char c = (char)('g'+random.nextInt(20)); chars[index] = c; } } return new String(chars); } // args[0..]开始是命令行运行程序时传入的参数 public static void main(String[] args) { System.out.println("secret: " + generateSecret().toUpperCase()); } } javac编译

在UUID.java所在目录下,新建一个bin文件夹,用来存放编译后的class文件。

通过javac命令,指定-d bin参数,将UUID.java文件编译输出到bin目录下面。

javac -encoding UTF-8 -d bin UUID.java

编译成功之后,得到bin/cn/liberg/UUID.class文件。

jar打包

在bin目录下创建manifest.txt文本文件,文件内容如下:

Main-Class: cn.liberg.UUID

需要特别注意,文件内容格式:

Main-Class:(空格)全限定类名(回车)

类名后的回车不能少!!

然后在bin目录下打开控制台,执行jar命令打包(和tar命令类似):

jar cvfm uuid.jar manifest.txt cn 已添加清单 正在添加: cn/(输入 = 0) (输出 = 0)(存储了 0%) 正在添加: cn/liberg/(输入 = 0) (输出 = 0)(存储了 0%) 正在添加: cn/liberg/UUID.class(输入 = 1086) (输出 = 688)(压缩了 36%)

jar命令将读取manifest.txt文件中的配置,并将整个cn目录打包进uuid.jar中。其中各个参数的含义:

c:create,指定是创建新的归档文件。 v:verbose,在标准输出中生成详细输出,该选项是可选的。 f:指定打包后的jar文件名。 m:指定自定义的MANIFEST.MF清单文件,否则,默认会生成不包含Main-Class的清单文件。

jar更详细的用法可以查看帮助:

PS D:\dev\java\liberg\UUID\bin> jar --help 用法: 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/ . java -jar执行

通过java -jar执行打包好的jar文件:

PS D:\dev\java\liberg\UUID\bin> java -jar uuid.jar raw: 2262B6A4-938B-42E2-80D0-B81DCA9668AE secret: 2262B6R4-93KB-4RS2-80D0-BW1DNA9668AE 做成bat文件,双击直接运行

最后,如果是Windows系统,还可以写一个.bat文件,双击可以直接运行:

@echo off java -jar D:/software/green/uuid/uuid.jar pause
标签:

Java命令行程序实战:javac编译,jar命令,jar包由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Java命令行程序实战:javac编译,jar命令,jar包