0

Java の ProcessBuilder を介して Windows BAT ファイルを呼び出す Tomcat サーブレットがあります。BAT ファイル内のコマンドに 1000 文字を超える文字があると、ProcessBuilder から返されるリターン コード 128 でプロセスが失敗するようです。

非常に奇妙です-BATファイルを編集して、問題のあるコマンドにいくつかのスペースを入れてエラーを引き起こすことができます...またはスペースを削除すると、すべてが正常に実行されます。

何か案は?

4

2 に答える 2

0

javaのtomcatの制限ではありません。Windowsの制限です。ところで、Unix システムでさえ、そのような種類の制限がありますが、通常ははるかに大きくなります。

したがって、この問題を回避するには、それほど長いコマンド ラインを作成しないでください。バット ファイルを変更できない場合は、変更不可能なファイルを実行する別のバッチ ファイルを作成します。この 2 番目のバット ファイルは、実行時にユーザーの一時的な場所に動的に作成できます。その後、それを実行して、不要になったら削除できます。

于 2012-04-30T17:34:04.333 に答える
0

シェルのコマンド名の制限を超えた可能性がはるかに高くなります。

BAT ファイル内では、Tomcat ではなく、CMD.EXE プログラムが行を読み取っています。Tomcat は、(提供された BAT ファイル引数を使用して) CMD.EXE プロセスを起動する役割を果たしました。

于 2012-04-30T17:33:26.123 に答える