论坛首页 Java企业应用论坛

教你如何在java程序中调用本地应用程序

浏览 11669 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-09-21  
本人在项目中遇到这样一个问题,要使用java来调用本地应用程序执行某些操作,例如执行isql命令,来kill掉数据库中的某些进程,这些是数据库本身的命令,很多jdbc根本不支持这些命令,所以不得不使用调用本地应用程序来执行这些命令。
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);
        }
    }
   发表时间:2006-09-21  
哪位,我也想知道怎么做?
0 请登录后投票
   发表时间:2006-09-21  
上面不是有例子吗
0 请登录后投票
   发表时间:2006-09-21  
最好OO一点
只让程序去运行一个.bat文件
而文件的内容可以在机器上自己去调整
不要放到程序中去
path这种东西太多变化了。。。
0 请登录后投票
   发表时间:2006-09-21  
只是一个sample而已,这个程序的目的是能够调用本地应用程序,OO,封装是后话
0 请登录后投票
   发表时间:2006-09-21  
http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html
0 请登录后投票
   发表时间:2006-09-22  
devworks 写道
http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

good article, very helpfull
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics