java的windows自动化

时间:2021-07-10 06:54:16

  那么在一些工具齐全并且已经有了一定的写好的java程序的情况下(环境变量和软件见上一章http://www.cnblogs.com/xuezhezlr/p/7718273.html),如何自动化运行java程序呢

  本文所有路径都是本地的绝对路径,读者应随机应变,在自己机器上的路径与我的路径会有出入,一定要改

  首先先建立一个新的java程序helloword,,,打开ideal,创建一个maven的工程,导入我们的jdk(路径请自行寻找,就是java的安装地点选定jdk文件夹)。并创建一个java工程,名字随意,笔者写的是123,,,

java的windows自动化

 另一方面,我们在新建立的工程下新建文件夹和java程序,先到src->main->java下右键新建一个package(这就是java的文件夹,理论上应该按照一定规则把有相似用法或者相互调用关系的程序放在一个文件夹中),再在新的文件夹下右键新建java程序

里面写上一句话

public  static void main(String args[]){
System.out.printf("helloword");
}

java的windows自动化

运行后可以直接打印出helloword,这就是java的手动运行方式

再建立一个程序,只是输出变为了123456

下面就该想了,所谓的自动化应该是非人工机器执行的一个定时的机制,绝对不是手动的,,,所以下面来说下怎么让机器来执行上述java代码,我一共会3种方法,比较推荐第3种

1使用压缩jar包启动

打开xshell,输入命令cd C:\Users\007\IdeaProjects进入刚刚建立的项目的工程上一级目录,然后执行jar -cvf zlr.jar 123,这个命令可以把123这个java工程打包成zlr.jar的jar包

再进入C:\Users\007\IdeaProjects目录下,可以看到zlr.jar包在该目录下存在,在这个目录下新建一个zlr.bat的文件,里面写上这几句话

@echo off
java -jar zlr.jar
pause

其实.bat文件其实就是,我们运行的方式,而这里的@echo off和pause是让页面暂停,不加的话运行结果根本看不到,,,中间那句java -jar zlr.jar才是运行jar文件的语句

保存后双击运行,报错如图

java的windows自动化

这里报错没有主清单文件,修改方法是,使用rar形式打开后进入META-INF文件夹,看一下MANIFEST.MF,里面现在只有两句话

Manifest-Version: 1.0
Created-By: 1.8.0_131 (Oracle Corporation)

 在后面添加上这一句话Main-Class: zlr.shiyan,注意冒号后面的空格,替换后运行报错,,,找不到或无法加载主类 zlr.shiyan

可见这种方法真心的恶心,我们要做的是,把代码中的第一行package zlr;去掉,只打jar包是没问题的运行,,,

2与上文很相近的class运行

在原来的代码基础上进入目录C:\Users\007\IdeaProjects\123\src\main\java\zlr可以看到两个java文件,这就是我们这两个可怜的程序

在xshell中运行下列命令

cd C:\Users\007\IdeaProjects\123\src\main\java\zlr  //进入

javac shiyan.java  //打包shiyan.java这个java程序,生成的class文件在当前目录下

javac shiyan  //运行shiyan这个刚刚生成的class文件

3使用ant进行触发

在上文提到的两种方法中我们认识到,启动一个java程序需要先编译在进行其他操作,而且相对的比较麻烦,主要是如果java工程相对的比较庞大,我们要做的要先删除包声明package zlr;这种东西,这是十分不友好的

使用ant进行触发的话可以有以下几点好处

1ant集成性较好,可以把jar包导入在程序里面写出来,也可以发邮件等操作

2ant使用的是class文件,也算是比较简单的得到

3ant对包名称,注释等java现象可以比较好的兼容,ant也会打日志~

4ant支持*这种操作,也有一些标签,对testng,jmeter和juint都支持性较强,而上文中的基本上是只支持main函数(笔者确实只知道他们支持main函数,其他的暂时不知道~)

总的来说我个人非常喜欢使用ant来触发,现在来看一下怎么触发

在那个class所在的路径下,建立一个xml文件,里面写上这些

<?xml version="1.0" encoding="UTF-8" ?>
<project name="HelloWorld" default="run" basedir=".">
<!--运行 运行命令其实就是Java的命令。指明要运行的类名,以及路径,可以知名运行的class-->
<target name="run">
<java classname="shiyan" classpath="C:\Users\007\IdeaProjects\123\src\main\java\zlr" />
</target>

</project>

  其实这个classpath和classname是每个人都不一样的,要改,再建立一个.bat文件,写上
ant -f C:\Users\007\IdeaProjects\123\src\main\java\zlr\build18.xml>C:\Users\007\IdeaProjects\123\src\main\java\zlr\build18.log

  运行结果会写到build18.log中,显示运行成功

--------我是华丽的分割线------

  上文介绍了如何用程序ant来运行java代码,下面简单说一下怎么用windows的定时任务

  笔者是windows10,其他操作系统请自行摸索

  搜索任务,选择任务计划程序,右键创建一个基本任务,如下图

java的windows自动化

  点击下一步,选择启动程序,找到我们的bat文件,,,

java的windows自动化

  如此就可以完成一个最简单的windows定时触发器了

  触发器的话除了这种定时任务之外,还可以使用jenkis触发,我也做过,但是那是另外一个工程了,总的来说如果没有部署的事情的话,定时触发使用这个就ok了

  累死我了,这样终于介绍完了windows自动化的实现了,在自己写好java代码的基础上,使用定时任务+.bat+ant+build->java即可~有机会就试试吧,电脑上就可以做到的