問題タブ [apache-commons-exec]
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.
java - commons-exec はスレッドセーフですか?
Apache Commons Exec はスレッドセーフなライブラリですか?
java - commons-exec: システム PATH でプログラムを実行していますか?
親フォルダーがパス上に存在するプログラム (具体的には ImageMagick から変換) を実行しようとしています。したがって、convert
コマンドラインから実行すると、コマンドが実行されます。ただし、次の場合は失敗します。
変換実行可能ファイル ( C:\Program files\...
) のフル パスを指定すると、このコードが機能します。これを行わないと、 exit value で例外がスローされます4
。
commons-exec にシステム パスを認識させるにはどうすればよいですか?
java - commons-execを使用したストリーミング出力?
で実行された外部プログラムの出力をストリーミングする方法の例を誰かに教えてもらえますDefaultExecutor
か?これを行う方法を説明しているドキュメントが見つかりません。
私の外部プロセスは数時間実行されるため、すべての出力データを取得するだけでは実行できません。ストリーミングする必要があります。
java - commons-exec: executor.execute(commandLine); を呼び出すとハングします。
これがぶら下がっている理由がわかりません。commons-exec を介して実行されるプロセスからの出力を取得しようとしていますが、ハングし続けます。以下に、この動作を示すサンプル プログラムを示します。
java - Apache Commons exec または ProcessBuilder のどちらかを決定する
ProcessBuilder
Commons execを使用するかどうかを決定しようとしていますが、
私の要件は、私が気にしないstdout/stdin/stderrを持つデーモンプロセスを作成しようとしているということです。さらに、時が来たら、このプロセスを破棄するために kill を実行したいと考えています。
LinuxでJavaを使用しています。
どちらにも問題と落とし穴があることを知っています (別のスレッドを使用してストリームを飲み込むと、ブロックやデッドロックが発生する可能性があり、ストリームを閉じて開いているファイルがぶら下がったままにならないようにするなど)。方法または他の方法、および従うべき優れたリソース。
java - java commons-exec から起動されたアプリは win7 で Web にアクセスできませんが、cmd.exe から起動された場合はアクセスできます
Windows7 で実行し、wkhtmltopdf を使用してサイトから pdf を生成すると、コマンド プロンプトから正常に動作します。commons-exec を介して jetty で実行されているサーブレットからまったく同じ wkhtmltopdf コマンドを実行すると、空白の pdf が生成されます。
サイトのアクセスログ バルブをオンにし、win7 に netmon をインストールしました。コマンド プロンプトから呼び出すと、サイト自体への Web 要求が生成されていることがはっきりとわかりますが、まったく生成されていません。桟橋起動プロセスから。
win7 のイベント ビューアーでイベント ログを調べましたが、空の pdf を説明するセキュリティ例外などは見当たりません。pdf を生成しているという事実は、wkhtmltopdf 実行可能ファイルが正しく呼び出されていることを意味します。
wkhtmltopdf に http アクセス権がない原因は何ですか?
java - Apache Commons Execで起動された実行可能ファイルに文字列引数をパイプする方法は?
Apache Commons Exec で起動されたコマンドの stdin にテキスト引数をパイプする必要があります (興味深いことに、コマンドは gpg で、引数はキーストアへのパスフレーズです。gpg にはパスフレーズを明示的に提供する引数がありません。標準入力から受け入れる)。
さらに、Linux と Windows の両方をサポートするためにこれが必要です。
私がするシェルスクリプトで
また
ただし、タイプは実行可能ファイルではなく、解釈されたコマンド (cmd.exe) に組み込まれたコマンドであるため、Windows では機能しません。
(上記の理由で)動作しないコードは以下のとおりです。これのためにシェル全体を生成するのはあまりにも醜いので、よりエレガントなソリューションを探していました。残念ながら、BouncyCastle ライブラリと PGP の間にはいくつかの非互換性の問題があるため、(非常に短い) 時間内に完全にプログラム化されたソリューションを使用することはできません。
前もって感謝します。
java - Apache Commons Exec は、スペースを含む引数に対してあまりにも多くの引用符を生成しますか?
Apache Commons Exec にバグがあるか、間違った API を使用していますが、CommandLine
クラスを使用してスペースを含む引数を追加すると、いくつかの引用符が追加され、与えられた引数の一部になります。
例: java "what version"
get を呼び出すと、(コマンド ライン引数自体の一部であるエスケープされた引用符が含まれている) を呼び出すと、 get が取得されjava.lang.NoClassDefFoundError: what version
ます。java "\"what version\""
java.lang.NoClassDefFoundError: "what version"
したがって、次のテストは失敗します。これは、最後の行でわかるように、Apache Exec が最初のバージョンを生成する必要がある場所で、後者のバージョンを生成しているためです。
今私は知りたい:
- これはバグですか?
- もしそうなら: この問題を回避する方法 (回避策) はありますか?
- そうでない場合: 何が間違っていますか?
編集:私は、自分のマシンで実行する人が最も少ないと思われるプロセスを実行しようとしています。したがってjava
、このコマンドは Java を開発するすべてのマシンで使用できるはずなので、代わりに使用しています。私の要点は、間違ったランタイム引数が外部プロセスに渡され、エスケープされた引用符が含まれているということです。
編集: 私はこれをJiraの commons exec のバグとして報告しました。
apache-commons-exec - commons-execを使用した一連のコマンド
私はapachecommons-execを初めて使用します。
毎回認証せずに一連のコマンドをリモートマシンに送信する方法はありますか?
この注文をしたい:
しかし、どうやらcommons-execはこれを必要としています:
何か案が?
java - apache.commons.exec-実行されたプロセスによってスローされた例外を飲み込みますか?
Apacheのcommonsexecライブラリを使用して、Windows上のJavaコードから別のアプリケーションを実行します。他のアプリケーション(tshark)は、ウィンドウに「未処理のwin32例外が...で発生しました」というウィンドウをポップアップさせる醜い例外をスローする可能性があります。ユーザーがそのウィンドウに遭遇しないように、Javaコードでその例外を飲み込む方法はありますか?