0

こんにちは、次のコードからシェルスクリプトを実行しようとしています

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

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


    BufferedReader stdErr=null;
    BufferedReader stdIn=null;
    try{   
    System.out.println("In Script");
    String[] commands= {"ls"};
    Process process  = Runtime.getRuntime().exec("/mobilityapps/testScript/testScript.sh");
    stdIn=  new BufferedReader(new InputStreamReader(process.getInputStream()));        
    stdErr = new BufferedReader(new InputStreamReader(process.getErrorStream()));
    String inline= stdIn.readLine();
    String errline =stdErr.readLine();
    System.out.println("*Inline*"+inline);
    System.out.println("*Errline*"+errline);
    while(inline!=null){
        System.out.println(inline);
        inline=stdIn.readLine();
    }
    while(errline!=null){
        System.out.println(errline);
        errline=stdErr.readLine();
    }
    System.out.println("Process Exit Value: "+process.waitFor());
    }catch(Exception excp){
        excp.printStackTrace();
    }
}

}

私が呼び出そうとしているスクリプトは

CURRDATE=`date '+%d%b%Y'`
TIMESTAMP=`date '+%H:%M'`
BASE_PATH=/mobilityapps/testScript
LOGFILE=${BASE_PATH}/logs_${CURRDATE}_${TIMESTAMP}.log
echo ${CURRDATE} ${TIMESTAMP}>>${LOGFILE}

スクリプトと Java プログラムはすべて同じディレクトリにあります。実行すると正常に実行testScript.shされPUTTYます

しかし、Javaプログラムから実行するとProcess Exit Value is 255

誰でも変更を提案できますか?

4

1 に答える 1

2

パスを置き換えてみてください

    Runtime.getRuntime().exec("/mobilityapps/testScript/testScript.sh");

    Runtime.getRuntime().exec("./mobilityapps/testScript/testScript.sh");

先頭に / だけを使用すると、絶対パスであることを意味します。「.」の使用 相対パスであることを示します。

于 2013-05-09T03:29:16.753 に答える