0
私はコンソールからうまく動作するいくつかのbashコマンドを実行しようとしていますが、Java内から同じコマンド呼び出しをしようとすると失敗します。コマンドはエラーを戻さず、目的の出力ファイルを生成できません。このコマンドは、PGPツール(GPG)を使用してファイルを復号化し、別のファイルを作成することを想定しています。これは、手動で実行されたときに動作しますが、同じシェル呼び出しを行い、エラーのないJavaアプリケーション内からではありません。シェルコマンドはjavaから失敗しますが、手動で実行すると動作します
ちょうど私がコンテナフォルダにchmod 777を試みたことを確かめるために、私はそのパーミッションの問題を考えていません。
シェルキュータコード(Mkyong.comのCoutesy)
private static String executeCommand(String command) {
StringBuffer output = new StringBuffer();
Process p;
try {
p = Runtime.getRuntime().exec(command);
p.waitFor();
BufferedReader reader =
new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine())!= null) {
output.append(line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
return output.toString();
}
実際のシェルコマンド
gpg --output /main/decrypted-token.txt --passphrase test /main/token.asc
どこスクリプトがですか?あなたは 'executeCommand()'にどのようなコマンドを送りますか? – Biffen
@Biffen「実際のシェルコマンド」の下の質問の最後に...私がスクリプトを言ったことを忘れてしまった。 .shファイルとしてパッケージ化するか実行するかは、純粋な文字列であるかどうかは同じです。 –
デバッグのヘルプ( '**なぜこのコードは動作しないのですか?**')には、目的の動作、特定の問題またはエラー、およびそれを再現するのに必要な最短コード**を質問自体に含める必要があります**。 **明確な問題文**のない質問は他の読者には役に立たない。参照:[最小限で完全で検証可能なサンプルの作成方法](http://stackoverflow.com/help/mcve) – Biffen