1

Javaクラスから単純なImageMagickコマンドを実行しようとしていますが、Im4Javaを使用する代わりに、いくつかのコマンドを実行するだけでよいので、ProcessBuilder.start()を直接使用できます。私は次のコードを使用しています-

ProcessBuilder pb = new ProcessBuilder("convert","pic2.png","pic52.png");
          pb.directory(new File("/user/gaurav_kl"));
         pb.start();

しかし、エラーIOExceptionが発生します-プログラム "convert"を実行できません(ディレクトリ "/ user / gaurav_kl"内):error = 2、そのようなファイルまたはディレクトリはありません理由は何でしょうか。ターミナルから同じコマンドを実行すると、IMがクラスパスに追加されているため、どのDirからでも正常に機能します。

4

1 に答える 1

4

コマンド実行可能ファイルを検索するときの ProcessBuilder の動作は、システム/jvm に依存します。基礎となるシェル (つまり BASH) と同じロジックを使用していると思われるかもしれませんが、ドキュメントではその保証はありません。

あなたの経験 (および他の人) に基づいて、完全なコマンド パスを提供することをお勧めします。例えば:

String IMGK_PATH="/usr/local/magick/bin";
ProcessBuilder pb = new ProcessBuilder(IMGK_PATH + "/convert","pic2.png","pic52.png");
pb.directory(new File("/user/gaurav_kl"));
pb.start();
于 2012-07-17T22:04:43.597 に答える