欢迎来到天天文库
浏览记录
ID:8451926
大小:27.28 KB
页数:2页
时间:2018-03-28
《java调用windows程序》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、Java调用windows程序由于工作中要使用Java调用4UWmaMp3Converter命令行将vox格式转换成WMA格式,以方便在网页中试听,所以想到用java.lang.Runtime来处理这个问题。在使用过程中碰到了一些以前没有留意的问题,整理如下:一最简单的调用方式Stringcmd="WMAMP3Converter.exe";java.lang.Runtime.getRuntime().exec(cmd+"/""+filePath+"/"/wma");总结:此方法,要求可执行文件在Tomca
2、t的工作目录中。一般的,程序安装目录都在Tomcat目录之外,所以使用绝对路径来替代以上方案。二使用全路径调用可执行文件Stringcmd="C://WMA//WMAMP3Converter.exe";java.lang.Runtime.getRuntime().exec(cmd+"/""+filePath+"/"/wma");总结:此调用方式执行没有问题,后来测试完成后部署到服务器上,发现问题又出来了,程序执行错误。分析原因,因为本地测试和服务器安装路径不同,服务器安装软件的目录为C:/ProgramF
3、iles/4UComputing/WMAMP3Converter/,这里路径里有空格,造成空格处断开,所以命令行无法正确截取参数。三安全的全路径方式调用执行文件Stringcmd="/"C://ProgramFiles//4UComputing//WMAMP3Converter//WMAMP3Converter.exe/"";java.lang.Runtime.getRuntime().exec(cmd+"/""+filePath+"/"/wma");总结:在cmd串中,把可执行文件的全路径用双引号包含,
4、就可以解决路径、文件名中包含空格、全角字符等问题。程序运行一段时间以后,发现有时候程序执行完后转换文件没有,程序没有错误,而且服务器上有很多进程没有结束。原来调用可执行文件失败了,但是程序不知道,以为成功了,然后继续去找转换后的文件来播放导致失败。分析原因,是因为上面的方式异步的,也就是说java提交运行文件的命令以后,立即转到播放模块。解决办法就是让命令行同步方式执行,也就是主程序等待调用可执行文件结束以后再执行。(注:当然,播放之前检查文件是否存在也是可以的,这里是说明同步异步的问题。)四异步方式调用
5、外部可执行文件Processprocess=null;Stringcmd="/"C://ProgramFiles//4UComputing//WMAMP3Converter//WMAMP3Converter.exe/"";process=java.lang.Runtime.getRuntime().exec(cmd+"/""+filePath+"/"/wma");process.waitFor();总结:构造一个Process对象,将运行进程获取过来,控制这个进程等待调用结束再继续运行。OK。五顺便说一下
6、,使用Process对象以后,可以用如下方法返回错误信息和输出信息,来进一步控制进程运行。process.exitValue()process.getErrorStream()process.getInputStream()process.getOutputStream()
此文档下载收益归作者所有