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

shenhongzhou 2007-03-05 05:52:05
请教各位,谢谢!

我有一个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脚本为什么不行啊?我错在哪里呢?谢谢高手指教!
...全文
348 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
oibook13 2008-11-04
  • 打赏
  • 举报
回复
我也学习了,3q
juddy_liu 2007-03-06
  • 打赏
  • 举报
回复
你应该深入理解函数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 ){}
}
}
}
}
guochun 2007-03-06
  • 打赏
  • 举报
回复
./servicestart.sh
servicestart.sh 加上可执行权限
使用绝对路径试试
如/acct/java/servicestart.sh

1,543

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 Solaris
社区管理员
  • Solaris
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧