免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4864 | 回复: 8
打印 上一主题 下一主题

java程序调用sh脚本没有反映,我错在哪里? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-05 17:44 |只看该作者 |倒序浏览
请教各位,谢谢!

我有一个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脚本为什么不行啊?我错在哪里呢?谢谢高手指教!

论坛徽章:
0
2 [报告]
发表于 2007-03-05 18:45 |只看该作者
lz是超级潜水王,注册2年多,终于破处。
我菜鸟,只能在这灌点水,然后等高手来解答,自己再学习

论坛徽章:
0
3 [报告]
发表于 2007-03-06 10:18 |只看该作者
同意楼上

不过还是要帮你顶起,顺便学习学习

论坛徽章:
0
4 [报告]
发表于 2007-03-06 10:20 |只看该作者
lz果然是奇人,注册多年,第一次发帖,恭喜贺喜!

论坛徽章:
0
5 [报告]
发表于 2007-03-06 10:36 |只看该作者
pid=Runtime.getRuntime().exec("./servicestart.sh > shz");
改成下面的 试下
String  path  =  "/shz";  
Runtime.getRuntime().exec("./servicestart.sh >"  +  path);

[ 本帖最后由 managergh 于 2007-3-6 10:39 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2007-03-07 09:37 |只看该作者
学习````````

论坛徽章:
0
7 [报告]
发表于 2007-03-07 11:46 |只看该作者

to managergh :我按照你的方法尝试了,还是不行。

to managergh :我按照你的方法尝试了,还是不行。
不知道其他高手有没有什么高见啊?

论坛徽章:
0
8 [报告]
发表于 2007-03-10 11:20 |只看该作者
这个问题 主要就是你那段 java代码 没编译执行...问题就应该出在我 改的那个地方吧..

论坛徽章:
0
9 [报告]
发表于 2007-07-01 15:36 |只看该作者

Why?

改了一句:
pid=Runtime.getRuntime().exec(args[0]);
编译后,从命令行输入参数运行: java testsyn ./servicestart.sh >shz
生成了文件shz,可文件内容却是:
ready to run script!
pid:java.lang.UNIXProcess@1ac04e8
script run over!


不知道为什么

[ 本帖最后由 zf80230901 于 2007-7-1 15:38 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP