2012-05-05 1 views
2

私は卒業証書のためのアプリケーションを開発しましたが、ある時点ではJavaソースファイルからバッチファイルを実行する必要があります。問題は、そのバッチファイルを実行しようとするたびに、「このコマンドを処理するのに十分なストレージがない」というエラーが表示されることです。Cmdエラー - このコマンドを処理するのに十分なストレージがありません

このバッチファイルは、cvs ログコマンドを実行するだけです。私はcmdから直接コマンドを実行するとすべてがうまくいっていますが、このコマンドを含むバッチファイルを実行しようとするとエラーが発生します:(

私はこの例をバッチファイルの実行に使用します:

// -------------- 
Process process = Runtime.getRuntime().exec(cmd); 
process.waitFor(); 
// -------------- 
cmdは、このような文字列で、

:。\「absolute_path_of_batch_file」「CMD/\を開始Cが」

誰がどのように私はこの問題を解決することができます知っていて、それがまさにこのエラー何んありがとう? !

+0

多分あなたはメモリを使い果たしたのと同時にJavaアプリケーションを起動しています。 -Xmxを使用してJavaヒープを下げてください。ちょうど簡単な推測ですが、あなたがcmdを単独で実行できると言ったらうまくいくかもしれません。 –

+0

alain.janinm:私はこれを試しましたが、うまくいきませんでした。その他の提案はありますか? ありがとう! – stormhold

+0

申し訳ありませんが、他のアイデアを取得しないでください。それはおそらくWindowsのメモリ管理に関連していると私はあなたに伝えるために、より多くのLinuxユーザーです...私はあなたが正しく質問をretaggedしました。 –

答えて

1

javaから実行すると、独自のプロセスでコマンドが実行されますコマンドラインからコマンドを実行した場合とまったく同じになります。バッチファイルを実行しているディレクトリ(または環境変数)は、異なる場合があります。バッチファイルに相対パスがありますか?

そうでない場合は、そのcmd文字列のsysoutを実行し、cmd端末でその文字列を正確に実行し、それが機能するかどうかを確認してください。また、正確なエラーを投稿します。

+0

ヒル:バッチファイルには相対パスはありません。バッチファイルは本当にシンプルです:2つの入力パラメータ(ディレクトリ - cvs logコマンドが実行される場所と出力ファイル - cvs logコマンドの出力がどこに置かれるか)を取得します。 * CD%1 cvs log>%2 *のようになります。両方のargsのパスは絶対パスです! – stormhold

+0

ヒル: '私があなたに例を見せてもらうために':[ここをクリック](http://img850.imageshack.us/img850/1839/57116084.jpg) )。 picの左の部分では、Javaソースからバッチファイルを実行して生成された出力を見ることができます。画面の右側には、cmdプロンプトでコマンドを直接実行している出力が表示されます。 **出力が同じであることがわかりますが、メッセージ**が表示されます。 – stormhold

+0

あなたのプログラムを 'java -Xmx4G 'で実行し、それが動作するかどうか確認してください。 –

関連する問題