当前位置:  技术问答>linux和unix

求救:java程序调用sh脚本没有反应,我错在哪里?

    来源: 互联网  发布时间:2016-02-26

    本文导语:  请教各位,谢谢! 我有一个sh脚本,名称为servicestart.sh,如下(最简单的):          echo "classpath is :"       echo "pash is :" 还有一个java程序,用来调用上面的sh脚本,名称为testsyn.class,源文件内容如下...

请教各位,谢谢!

我有一个sh脚本,名称为servicestart.sh,如下(最简单的):
    
    echo "classpath is :"
      echo "pash is :"


还有一个java程序,用来调用上面的sh脚本,名称为testsyn.class,源文件内容如下:
import java.io.*;

public class testsyn {
  public static void main(String[] args) {

  try{
  System.out.println("准备运行同步脚本!");
  Process pid=null;
  pid=Runtime.getRuntime().exec("./servicestart.sh > shz");
  if(pid!=null){
  System.out.println("进程号:"+pid.toString());
  }else{
  System.out.println("没有pid!");
  }
  System.out.println("同步脚本运行完毕!");
  }catch(IOException ioe){
  System.out.println("执行脚本时发生错误:"+ioe.getMessage());
  } 
 
    }
}


结果是:
1、当我直接在系统命令行运行:./servicestart.sh > shz
    脚本顺利运行,产生shz文件。
2、当我通过java程序运行sh脚本时:java testsyn,结果如下:
   准备运行同步脚本!
     进程号:java.lang.UNIXProcess@f62373
     同步脚本运行完毕!
 并没有产生shz文件,说明脚本没有运行。

说明:我的OS是Solaris 10,并且在X86和Sparc上都是这样的情况。

我这样用java程序调用sh脚本为什么不行啊?我错在哪里呢?谢谢高手指教!

|
你应该深入理解函数exec,还有类RunTime, Process。我改了一下你的代码,应该可以帮助你!

servicestart.sh 文件如下:
echo "classpath is :"
echo "pash is :"
echo $1      ##1
echo $2      ##2
源代码为:
import java.io.*;

public class testsyn {
    public static void main(String[] args) {
        BufferedReader br = null;
        try{
            System.out.println("准备运行同步脚本!");
            Process pid=null;
            pid=Runtime.getRuntime().exec("./servicestart.sh > shz");
/*
   > 与 shz 是 servicestart.sh 的 auguments。servicestart.sh中的#1,2用于测试。
*/
            if(pid!=null){
                System.out.println("进程号:"+pid.toString());
                br = new BufferedReader(
                    new InputStreamReader( pid.getInputStream() ), 1024 );
                pid.waitFor();
            }else{
                System.out.println("没有pid!");
            }
            System.out.println("同步脚本运行完毕!");
            String line = null;
            while( br != null && (line = br.readLine()) != null ){
                System.out.println( line );
            }
        }catch(Exception ioe){
            System.out.println("执行脚本时发生错误:"+ioe.getMessage());
        }finally{
            if( br != null ){
                try{
                    br.close();
                }catch( Exception e ){}
            }
        }
    }
}

    
 
 

您可能感兴趣的文章:

  • 求救!weblogic6.0后台运行正确,前台页面跳转或调用其他页面时出“页面无法显示错误”
  • 请问在jsp中如何调用ActiveX控件啊!求救
  • 求救:怎样在JAVA中调用telnet程序?(急用!!)
  • java调用dll的问题???至今没有解决!!!求救!!!
  • 特急求救!oci的调用!
  • 求救!!如何在java程序中调用外部非java的exe文件?
  • 请教》 关于UNIX系统中 malloc 调用的严重问题。 求救。
  • 100分,求救-webshpere里面如何调用CGI??在先等待,解决就结帖。
  • 新手关于线程调用的求救!应该不难
  • 各位大虾!求救!!有一个关于调用输入类的程序,有一个错误,请指教!!
  • [高分求救啊]jni的C++实现中,调用iconv转UTF-8到GB18030老失败
  • 求救!高分!关于JAVA类调用的问题100分,在线等待
  • 再次求救,客户端调用ejb报错
  • 求救:修改系统启动脚本 不过脚本里面误写了阻塞命令
  • Linux下脚本如何实现以下功能描述?求救高手脚本问题
  • 紧急求救!!!!如何在shell脚本中,执行对mysql的操作
  • 紧急求救!! iis7站长之家
  • 求救!shell脚本的编写
  • 高分求救!怎样把shell脚本通过SQL语句查询的结果写到一个文件中?
  • crontab配置计划任务,却不执行相应的脚本,求救!在线等,我就这10分了,全给了
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求救!求救!紧急求救!为什么更新不了所指定的内容?
  • 求救!!!硬件高请进、、、、、、(十万火急,高分求救。)
  • 求救求救!!
  • 求救啊 高分求救 UNIX下关于进程通讯的问题~
  • 求救!!!求救!!!机器不能正常启动
  • 关于jdbc,求救求救!在线等待,马上给分
  • 紧急求救,root用户无权限删除文件
  • 晕,特晕...求救...
  • 高分求救~~如何取得linux下进程完整命令行字符串,就是的ps -ef 完整的全路径的CMD那一列,求救!!!!附现在的代码
  • 求救:java里如何取整一个浮点数(不做四舍五入)
  • 紧急求救!!
  • Linux下无法启动apache 高分求救!在线等待
  • 紧急求救 我用freebsd通过smbfs连接win2000的一些问题 (分不够可加)
  • 紧急求救 我用freebsd通过smbfs连接win2000的一些问题
  • 求救,linux和windows之间如何联成局域网(设置),并且相互之间移动文件。
  • 求救!!在Redhat7.3下安装scim0.9.3怎么安装?
  • Linux8.0 修改字符集后,再次进系统,无图形界面问题。。。求救。。
  • SUSE网络打印机问题,在线等,求救!!
  • 散分一百,紧急求救!ROOT密码忘记
  • 局域网内如何联网呀求救


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3