6.12.2 创建可执行的JAR包
6.12.2 创建可执行的JAR包
当一个应用程序开发成功后,大致有如下三种发布方式
1. 编译成平台相关的可执行性文件
使用平台相关的编译器将整个应用编译成平台相关的可执行性文件。
这种方式常常需要第三方编译器的支持,而且编译生成的可执行性文件丧失了跨平台特性,甚至可能有一定的性能下降。
2. 为应用编辑一个批处理文件
以Windows操作系统为例,批处理文件中只需要定义如下命令:java package.MainClass
当用户单击上面的批处理文件时,系统将执行批处理文件的java命令,从而运行程序的主类。
运行Java程序时不带CMD控制台
如果不想保留运行Java程序的命令行窗口,也可在批处理文件中定义如下命令:start javaw package.MainClass
3. 做成可执行JAR包
把应用程序压缩成JAR包来发布是比较典型的做法,如果开发者把整个应用制作成一个可执行的JAR包交给用户,那么用户使用起来就方便了。在Windows下安装JRE时,安装文件会将*.jar文件映射成由javaw.exe打开。对于一个可执行的JAR包,用户只需要双击它就可以运行程序了,
下面介绍如何制作可执行的JAR包。
创建可执行JAR包的关键
创建可执行的JAR包的关键在于:让javaw命令知道JAR包中哪个类是主类, 这样javaw命令可以通过运行该主类来运行程序。
创建JAR包时通过jar命令的e选项指定主类
jar命令有一个-e选项,该选项指定JAR包中作为程序入口的主类的类名。因此,制作一个可执行的JAR包只要增加-e选项即可。例如如下命令:
jar cvfe test.jar test.Test test
上面命令把test目录下的所有文件都压缩到test.jar包中,并指定使用test.Test类作为程序的入口.
运行jar包的方法
运行上面的JAR包有两种方式。
- 使用
java命令,使用java运行时的语法是:java -jar test.jar。 - 使用
javaw命令,使用javaw运行时的语法是:javaw test.jar。
当创建JAR包时,所有的类都必须放在与包结构对应的目录结构中,就像上面-e选项指定的Test类,表明入口类为Test因此,必须在JAR包下包含Test.class文件。
实例
下面来演示如何将下面的java文件打包成可执行jar包:
目录结构
1 | G:\Desktop\随书源码\疯狂Java讲义(第4版)光盘\codes\06\6.12\打包成可执行jar |
Test.java
这里测试的java源码如下:
1 | package test; |
带包编译 字节码文件生成在当前路径下
使用命令:javac -d . Test.java编译java源文件,指定在当前路径下生成.class文件。
编译后的目录结构
1 | G:\Desktop\随书源码\疯狂Java讲义(第4版)光盘\codes\06\6.12\打包成可执行jar |
打包成jar包时指定主类
使用命令:jar -cvfe Test.jar test.Test ./test将编译后的.class文件打包到jar包中
1 | G:\Desktop\随书源码\疯狂Java讲义(第4版)光盘\codes\06\6.12\打包成可执行jar>jar -cvfe Test.jar test.Test ./test |
命令解释
-c表示要创建一个JAR包-v表示输出创建JAR包时的具体信息-f对应后面的第1个参数:Test.jar,表示要打包到Test.jar中-e对应后面的第2个参数test.Test,表示程序的主类- 最后的
./test表示存放字节码文件的目录,也就是上面javac生成的目录
查看打包后的JAR包结构是否正确
1 | G:\Desktop\随书源码\疯狂Java讲义(第4版)光盘\codes\06\6.12\打包成可执行jar>jar -tf Test.jar |
注意.class文件要放在正确的包下,如果Test.class没有放在test包下,则说明上述打包有问题.
运行jar包
使用命令:java -jar Test.jar即可运行这个可执行jar包。
1 | G:\Desktop\随书源码\疯狂Java讲义(第4版)光盘\codes\06\6.12\打包成可执行jar>java -jar Test.jar |