2016-04-16 46 views
1

javaを使用して.shファイルを実行します。私は、ターミナルを開きたいと思うし、私は同じターミナルで別のコマンドを実行し、最後にそれを破壊することができます。 すでにProcessBuilderを使用しましたが、これを達成できませんでした。 コードの私の作品:Javaを使用して.shファイルを実行する

ProcessBuilder pb = new ProcessBuilder("/home/omar/ros_ws/baxter2.sh"); 
Process p = pb.start(); 

このメソッドは、別のコードで動作するように使用されるが、それは鉱山で働いていない理由を私は知りません。事前

+0

はい、私はjavaにエラーがありません。それだけで効果はありません。コードを実行すると、.shファイルを実行せずに正常終了します。私は端末が見えない –

答えて

1

実行されないことをどのように知っていますか?たぶんあなたはその結果を見ていないかもしれません。あなたはJDK 7+を使用している場合、してみてください。また

BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); 
String line = null; 
while ((line = reader.readLine()) != null) 
{ 
    System.out.println(line); 
} 

:あなたは実行した後p.getInputStream()を取得し、コンソールに印刷し、同様べきで

pb.redirectOutput(Redirect.INHERIT); 
pb.redirectError(Redirect.INHERIT); 
Process p = pb.start(); 
+0

私はすでにそれを試みました。コンソールには何も印刷されません。 –

+0

これはすでに出力を出力しています。そして私は何かを考え出した。私は現在のディレクトリを出力するpwdのみを含むスクリプトを作成し、出力は "/ home/omar/workspace/script runner"でした。これはeclipseワークスペースのディレクトリではなく、ルートディレクトリです。それをどうやって解決できるか。 –

+0

あなたは先の問題が解決したことを意味しますか?私はあなたが説明したことを理解しているか分からないが、それは別の問題と思われ、別の質問を掲示する必要があるかもしれない... –

0

おかげで、あなたのプログラムの出力誤差がないか、あなたのプログラムは、ファイルと対話していませんか?

私はProcessBuilder内でディレクトリメソッドを試してみることをお勧めします。

Process p = null; 
ProcessBuilder pb = new ProcessBuilder("baxter2.sh"); 
pb.directory("/home/omar/ros_ws"); 
p = pb.start(); 

これが機能しない場合は、アクセスしようとしているファイルのユーザー権限も調べる必要があります。

+0

同じこと。エラーはなく、権限の問題はありません。 –

+0

ポイントは、存在しない.shファイルへのパスを変更すると、IOExceptionをスローします。 –

0

私はあなたが.SHファイルを付与すべきだと思います以下のコマンドを使用してJavaプログラムを実行するために使用されたOSユーザーに実行可能なアクセス権を与えます。

chmod u + x baxter2.sh

+0

彼はすでにそれが問題ではないと言いました。 –

関連する問題