浏览 11679 次
锁定老帖子 主题:教你如何在java程序中调用本地应用程序
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-09-21
java 中Runtime类是可以调用本地应用程序的可以通过Runtime.getRuntime()来得到Runtime实例,然后执行exec方法来调用本地应用程序,Runtime类中有很多exec方法,参数不同,但是最后都会调用exec(String[] cmdarray, String[] envp, File dir) 这个方法, 其中cmdarray是要执行的本地命令集合,envp是环境变量,dir是exec返回的Process的工作目录。 比较容易出错的地方是环境变量的设置,如果envp is null,那么它会集成它的父进程的环境变量,如果不知道怎么设环境变量,这通常是一个好的选择,如果环境变量设置不当很有可能找不到dll或其他东西而是本地应用程序执行失败,一般会报这样的异常 > java.io.IOException: CreateProcess: yourcmd error=2 > at java.lang.Win32Process.create(Native Method) > at > java.lang.Win32Process.<init>(Win32Process.java:63) > at java.lang.Runtime.execInternal(Native Method) > at java.lang.Runtime.exec(Runtime.java:566) > at java.lang.Runtime.exec(Runtime.java:428) > at java.lang.Runtime.exec(Runtime.java:364) > at java.lang.Runtime.exec(Runtime.java:326) error =2表示filenotfound public void testProcess() { try { String home="e:/process"; String command = "D:/Sybase/bin/isql -Uuser -Pyourpwd -SserverName -iisql.sql"; File dir = new File(home); Process p = Runtime.getRuntime().exec(command, null, dir); StringBuffer strOutput = new StringBuffer(); BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); String strProc; while((strProc = in.readLine()) != null) { strOutput.append(strProc+"\n"); } logger.debug("output is "+strOutput.toString()); } catch(IOException e) { logger.warn("IOException ", e); } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-09-21
哪位,我也想知道怎么做?
|
|
返回顶楼 | |
发表时间:2006-09-21
上面不是有例子吗
|
|
返回顶楼 | |
发表时间:2006-09-21
最好OO一点
只让程序去运行一个.bat文件 而文件的内容可以在机器上自己去调整 不要放到程序中去 path这种东西太多变化了。。。 |
|
返回顶楼 | |
发表时间:2006-09-21
只是一个sample而已,这个程序的目的是能够调用本地应用程序,OO,封装是后话
|
|
返回顶楼 | |
发表时间:2006-09-21
http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html
|
|
返回顶楼 | |
发表时间:2006-09-22
devworks 写道 http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html
good article, very helpfull |
|
返回顶楼 | |