実行している外部プログラムがあります。何らかの理由で、コードの所有者は私にコードや優れたドキュメントを提供しませんでした。私はこのコードの実行方法を知っていますが、JAVAからではなくコマンドラインから実行するように元々書かれていました。私への影響は、このアプリケーションがENV変数を使用し、その値(出力用のコンピューター上のパス)を中継することです。その値を変更したいのですが、バッチファイルから実行せずにどのように変更できますか?
4 に答える
Java コードのRuntime .exec() メソッドの 1 つを使用してこのプログラムを実行し、 Processを作成していると仮定します。
これらのメソッドの一部では、作成中のプロセスに環境変数を渡すことができることに注意してください (例: exec(String[] cmd, String[] envp) )。
または、 ProcessBuilder.environment()によって返される Mapを操作して、同じ効果を得ることができます。
コマンドプロンプトで、最初に必要な変数を設定します
set FILELOCATION=<PATH TO FILE>
java MyProgram
この場合FILELOCATION
、プログラムを閉じるまで使用できます。
変数を設定しない場合は、OS に依存します。
Linux または Solaris の場合、次のことができます。
export FILELOCATION=<PATH TO FILE>
コマンド ライン パラメータを探している場合は、次のようなものを使用できます。
java MyProgram PathToFile
これを行うより良い方法がありますjava -DFILELOCATION=<PATH_TO_FILE> MyProgram
編集:コメントの通り。
ProcessBuilderを使用して、Java コードで ENV 変数を設定するだけです。
この投稿を参照してください。通常、質問を投稿する前に、まずここで検索を開始すると役立ちます。すでにその解決策を試している場合は、ヘルパーが試したことと何が悪かったのかを知らせるのに役立ちます。
バッチファイルから実行せずにどのように行うことができますか
グローバル環境変数を設定するだけです。すべての新しいプロセスがそれを認識します (古い親プロセスから環境を継承するプロセスを除く)。
Java から環境変数を設定するにはどうすればよいですか?も参照してください。. これは質問のタイトルに答えます。ところで、これは質問の本文と一致しません。;)