問題タブ [processbuilder]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1413 参照

nullpointerexception - Powermock:nullPointerExceptionを与えるProcessBuilderredirectErrorStream

私はpowermockを使用して、プロセスビルダーを使用してネイティブコマンド呼び出しをモックしています。奇妙なことに、これらのテストは時々合格し、時には失敗してNPEを与えます。これはパワーモックの問題ですか、それともプログラムの落とし穴ですか。

これが私がテストしているクラスのスニペットです:

単体テストケースは次のとおりです。

実行時にエラーが発生し、テストケースが失敗します。

注:すべての実行でこのエラーが発生するわけではありません。合格することもあれば、失敗することもあります。私はこの振る舞いを理解することができません。また、著作権の問題のため、いくつかの変数名をカモフラージュしました。

0 投票する
5 に答える
9389 参照

java - Process requires redirected input

I have a UNIX native executable that requires the arguments to be fed in like this

prog.exe < foo.txt.

foo.txt has two lines: bar baz

I am using java.lang.ProcessBuilder to execute this command. Unfortunately, prog.exe will only work using the redirect from a file. Is there some way I can mimic this behavior in Java?

Of course,

does not work.

Thanks!

0 投票する
1 に答える
3338 参照

java - ProcessBuilder の正しい使い方

調査した結果、Java の ProcessBuilder を使用する「正しい」方法は、他の 2 つのスレッドを生成して、新しく作成されたプロセスの stdout/stderr を処理し、次のようにハングしないようにすることであることに 気付きました。

しかし、これは私に2つの質問について疑問に思いました.

2.) さらに、両方のストリームを stdout にリダイレクトする場合、親プロセスが stdout ストリームを飲み込むだけで、デッドロックを心配する必要がなくなりますか?

0 投票する
1 に答える
1261 参照

java - Java: ProcessBuilder パスの変更

私は、さまざまなラベルの値を生成するために 3 次 C プログラムを利用する GUI フロントエンドとなる Java プログラムを作成しています。

しかし、C プログラムへのパスをハードコーディングする必要はありません。Javaプログラムを実行したのと同じディレクトリにあるという前提で、JavaプログラムにCプログラムを実行させたいだけです(そうでない場合は、エラーメッセージプロンプトが表示されます)。

これまでプロセスビルダーを使用したことがないので、広範な例に感謝します:)

0 投票する
10 に答える
26085 参照

java - Java ProcessBuilder: 結果のプロセスがハングする

Java の ProcessBuilder を使用して、Linux で「長期間」実行する必要があるアプリケーションを起動しようとしています。このプログラムの実行方法は、コマンドを起動し (この場合、メディア再生アプリケーションを起動しています)、実行を許可し、クラッシュしていないことを確認します。たとえば、PID がまだアクティブかどうかを確認し、プロセスが停止している場合はプロセスを再起動します。

私が今抱えている問題は、PID はシステム内で有効なままですが、アプリケーションの GUI がハングすることです。ProcessBuilder(cmd).start() を別のスレッドにシフトしようとしましたが、期待どおりに何も解決していないようです。

基本的に、結果として、ユーザーにはプログラムがクラッシュしたように見えますが、ProcessBuilder.start() プロセスを駆動する Java プロセスを強制終了すると、実際には、作成されたプロセスが通常の動作を再開できるようになります。これは、Java アプリケーション内の何かが生成されたプロセスに干渉していることを意味しますが、現時点では何が原因かまったくわかりません。(したがって、何も解決していないように見える別のスレッドに分けようとした理由)

誰かが意見や考えを持っている場合は、私に知らせてください。私は一生、この問題を解決する方法を考えることができません。

編集: プロセスから作成された I/O ストリームについて心配していないため、それに対処するための措置を講じていません。これにより、プロセス自体がハングする可能性がありますか?

0 投票する
2 に答える
841 参照

java - Java-メソッドに配列を与える方法

私は次のような方法を持っています:

このメソッド内で、ProcessBuilderを呼び出します。

argsパラメーターに含まれる任意の数のargsを含めてProcessBuilderを呼び出すにはどうすればよいですか?

たとえば、次のようなものです。

ProcessBuilderにこのコンストラクターがあることに気付きました。

多分私はそれをどうにかして使うことができた。

0 投票する
10 に答える
123483 参照

java - Java から別のアプリケーションを実行する

別の Java アプリケーションを実行するバッチ ファイルを実行する必要があります。実行が成功するかどうかは気にしませんし、エラーをキャプチャする必要もありません。

ProcessBuilderでこれを行うことは可能ですか? エラーをキャプチャしないと、どのような結果になりますか?

ただし、私の要件は、別の Java アプリケーションを実行することだけです。

0 投票する
4 に答える
444 参照

java - Process.execを使用する

プログラムの途中でバッチファイルを実行したい(これにより別のJavaアプリが起動します)。正常に実行されたかどうかを確認したり、そのバッチファイルの実行からエラーをキャプチャしたりしたくありません。そのバッチファイルを開始した後、そのバッチを実行した後にそれを待つのではなく、他のことをしたいと思います。

stdoutとstderrの世話をする必要がありますか?stdoutとstderrの世話をする方法はありますか。

これは、このトピックに関する私の混乱を解消するための2回目の投稿です。質問に具体的に記入し、process.exeまたはprocessbuilderの方法へのリンクをスローしないでください。

どんな助けでも大歓迎です。

0 投票する
1 に答える
405 参照

java - java processbuilder/rt.execの質問

2つの個別のJavaアプリケーションjavaapp1とjavaapp2があるとしましょう。
javaapp1から、.batファイル(javaapp2の起動を担当)を実行しています。

javaaap1とjavaapp2は互いに独立しています。

process.execまたはprocessbuilderでそれを行っていると仮定します。

今私の質問は:

  1. この場合、exitCodeは0でない場合、どういう意味ですか。バッチファイルの実行またはjavaapp2のコードで問題が発生したことを意味しますか?または両方?

  2. javaapp1のjavaapp2からエラーをキャプチャすることは可能ですか?はいの場合:どのように?javaapp2のクラスを直接呼び出していないので。

  3. javaapp2のエラーと出力はjavaapp1によって処理されますか?

0 投票する
1 に答える
278 参照

java - process.execが正しいコードを返さない

私はコード付きのJavaプログラムを持っています:

}}

test.batは、次のコードを持つ別のプログラムを実行します。

;;;; ;;;; ;;; ;;;

ただし、Test1からは、終了値は常に0です。バッチが実行されると、ConnectionTestクラスが実行され、DB2Driver22222が見つからないため、例外が発生します。

正しいエラーコードやエラーメッセージが表示されない理由を誰かに説明してもらえますか?