可执行jar,顾名思义,就是可以直接运行的java程序。比如你编写了一个过滤文章关键字的工具类,但是你希望平时也能用,而不是集成到其他环境中或者用IDE去运行……跟着笔者一步一步做下来,相信一定会有所收获
1. 编程环境
JDK版本:1.8maven版本:3.5.0IDE工具:IDEA系统:windows 7
2. 需求明确
2.1 启动
启动安卓模拟器
2.2 安装APP
在启动模拟器的情况下安装apk
2.3 运行APP
在启动模拟器的情况下,运行APP
2.4 退出APP后台进程
在启动模拟器的情况下,退出APP进程
2.5 卸载APP
在启动模拟器的情况下,卸载已安装的APP
3. 工程结构
包结构注释:
pom.xml
App.class:程序入口
service:业务逻辑处理
utils:工具包
exception:自定义异常
consts:常量类,如指令词典。
4. 简单的可执行jar——程序入口
4.1 可执行jar的初始化构建
为了让我们对可执行jar有个概念,我们先用maven构建一个简单的工程。maven创建项目的配置如下图所示
创建完成后的项目结构如下图所示
点击执行main函数(绿色的小三角),控制台输出“Hello World!”,则项目【初始化创建成功】
4.2 args字符串数组
可以看到程序入口main函数中,需要传入参数args。那么args里面到底有什么内容呢?我们对main函数进行修改(也可以使用debug模式),修改后main函数如下
【修改main函数方式查看】
public static void main(String[] args) { System.out.println("args数组的长度:"+args.length); System.out.println("args数组的内容:"); for (String arg: args) { System.out.println(arg); } }
再次执行,输出结果为
args数组的长度:0 args数组的内容:
从上面的结果我们可以知道,args为空数组,那为什么这里会有这个形参呢?是否可以删去这个形参呢?我们试试改成不传args的main函数来执行
public static void main() { System.out.println("Hello World!"); }
输出结果是直接抛异常了。
那么args究竟有什么作用呢?我们把main函数修改会【修改main函数方式查看】的状态。然后修改一下运行配置
再运行一次,我们可以发现args有内容了。
然而,这个说明什么呢?我们再用maven打包。按Alt+F12打开Terminal,运行指令
mvn package
出现“BUILD SUCCESS”,说明打包已经完成。打开target文件夹可以发现多了一个jar文件
我们在target文件夹下运行cmd
java -jar actuator-1.0.0.jar -a aa aaa bbbb
运行结果为
出现这个错误是因为我们pom文件中maven-jar-plugin少了一段配置,我们添加进去之后变成
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.0.2</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>com.zeemoo.nos.actuator.App</mainClass> </manifest> </archive> </configuration> </plugin>
再用打包,运行一次,可以看到下面的结果
说明args可以是外部传入的值。