请问在程序中要调用.sh执行另一个程序,这么写有问题吗?
  
Runtime rt = Runtime.getRuntime();  String cmds="./*.sh";   try {
   rt.exec(cmds);    System.out.println(cmds);//这里可以执行,但是调用的程序没有运行,不知道问题处在哪里了?
   }
   catch (IOException ex2) { System.out.println("执行失败!!");
   }望高手赐教......

解决方案 »

  1.   

    命令行能运行吗
    看看这个
    http://www.linuxfans.org/bbs/thread-72116-1-1.html
      

  2.   

    你用      Process process = rt.exec(cmds);
          BufferedReader bufferedReder = new BufferedReader(new InputStreamReader(process.getInputStream()));
          String s1;
          while((s1 = bufferedReder.readLine()) != null){
            System.out.println(s1);
          }把信息都打印出来,再来分析
      

  3.   


    打印信息如下
    stsit:/oradata/daemon>./stmonitor.sh
    确定,用于 Client Toolkit ROOT 组件的环境集合。
        root  6254 16656   0 09时17分03秒  pts/6  0:00 grep STMonitor 
        root 15154 16656   4 09时17分14秒  pts/6  0:00 /usr/WebSphere/AppServer/java/bin/java -classpath /oradata/daemon/lib/dom4j-1.6.1.jar:/oradata/daemon/lib/classes12.jar:/oradata/daemon/classes com.st.stick.STMonitor程序不报错,希望调用的程序就是不运行.还望指点.谢谢!
      

  4.   

    是不是你目录下有好几个sh文件,需要*.sh来执行
    在程序中不要用*号看可以不
      

  5.   


    引起误解了,就执行一个, sh ststick.sh热心人,再问 sh  可以这么用吗 sh /oradata/daemon/ststick.sh
      

  6.   

    只有一个的话,你打印出来的
    打印信息如下 
    stsit:/oradata/daemon>./stmonitor.sh 
    确定,用于 Client Toolkit ROOT 组件的环境集合。 
        root  6254 16656  0 09时17分03秒  pts/6  0:00 grep STMonitor 
        root 15154 16656  4 09时17分14秒  pts/6  0:00 /usr/WebSphere/AppServer/java/bin/java -classpath /oradata/daemon/lib/dom4j-1.6.1.jar:/oradata/daemon/lib/classes12.jar:/oradata/daemon/classes com.st.stick.STMonitor 
    就是你运行的东西了shell版本有很多种,sh ststick.sh运行应该没问题,但是一般没有直接这么用的,需要自己指定shell版本
    如:/usr/bin/bash /oradata/daemon/ststick.sh