读书人

求救:java程序调用sh脚本没有反应小

发布时间: 2011-11-30 21:16:57 作者: rapoo

求救:java程序调用sh脚本没有反应,我错在哪里?
请教各位,谢谢!

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

[解决办法]
sh /etc/servicestart.sh
然后在脚本里追加到> shz
[解决办法]
应该是路径的问题,你可以尝试下用 servicestart.sh 的绝对路径,而不是相对路径,因为JAVA的运行时当前路径不一定在你命令行的当前路径。

读书人网 >J2SE开发

热点推荐