以下は Java では機能しません (例外がスローされます)。
Runtime.getRuntime().exec("cd mydir; myprog");
PHPでも同じことがうまくいきます:
exec("cd mydir; myprog");
Java の実装の正確な違いとその理由 (一見すると、より制限されているように見えます)。
以下は Java では機能しません (例外がスローされます)。
Runtime.getRuntime().exec("cd mydir; myprog");
PHPでも同じことがうまくいきます:
exec("cd mydir; myprog");
Java の実装の正確な違いとその理由 (一見すると、より制限されているように見えます)。
java exec コマンドは、システム コマンド インタープリターを使用しません。"cd mydir; myprog" のようなものは、システム コマンド ライン インタープリター (たとえば、 windows cmd
、 linux sh
) に依存して、それを 2 つの別個のコマンドに分割し、それぞれを実行します。java はシステム コマンド インタープリターを呼び出さないため、機能しません。各コマンドを個別に呼び出すか、コマンド ラインの一部として目的のインタープリターを自分で呼び出す必要があります。
私は人々がこのような問題を抱えているのを見てきました.いくつかの方法があると確信しています. その前に cmd を追加します。
Runtime.getRuntime().exec("cmd cd mydir; myprog");
サーバー上の CLI 環境で Java ではなく、アプレットを実行していると仮定しますか? その場合、Java ランタイムはサーバーではなく、クライアント コンピューターで実行されています。
Java には、セミコロンよりも複数のコマンドを処理する優れた方法もあります。署名を使用する代わりに:
Runtime.exec(String)
コマンドごとにこれを使用してみてください:
Runtime.exec(String[])
コマンドの各引数を文字列配列の要素にします。