[解決済み] Javaから環境変数を設定するにはどうしたらいいですか?
質問
Javaから環境変数を設定するにはどうすればよいですか? サブプロセスに対しての設定は
ProcessBuilder
. しかし、起動するサブプロセスがいくつかあるので、むしろ現在のプロセスの環境を変更して、サブプロセスにそれを継承させたいと思っています。
そこには
System.getenv(String)
を使用すると、1つの環境変数を取得することができます。また
Map
で環境変数一式の
System.getenv()
. しかし
put()
その上で
Map
を投げる。
UnsupportedOperationException
-- どうやら、環境を読み取り専用にすることを意味しているようです。そして
System.setenv()
.
では、現在実行中のプロセスで環境変数を設定する方法はあるのでしょうか? もしあれば、どのように? ない場合、その根拠は何ですか? (これはJavaだから、環境を触るような邪悪な非移植性の時代遅れのことをしてはいけないからでしょうか?) そして、そうでない場合、私がいくつかのサブプロセスに供給する必要がありそうな環境変数の変更を管理するための何か良い提案はありますか?
解決方法は?
<ブロッククオート(これはJavaだから、自分の環境を触るような邪悪な非移植性の時代遅れのことをしてはいけないということでしょうか?)
正鵠を射ていると思います。
負担を軽減する方法として考えられるのは、メソッドを因数分解することです。
void setUpEnvironment(ProcessBuilder builder) {
Map<String, String> env = builder.environment();
// blah blah
}
を指定し、任意の
ProcessBuilder
を起動する前に通過させる。
また、すでにご存知の方も多いと思いますが、複数のプロセスを同じ
ProcessBuilder
. そのため、サブプロセスが同じであれば、この設定を何度も行う必要はありません。
関連
-
Javaクラスローダーにソースコードから潜り込む
-
IDEA パッケージステートメントの欠落
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] 環境変数の値にアクセスする方法
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] エクスポートされた環境変数を削除する方法を教えてください。
-
[解決済み] Node.jsで環境変数を読み込む
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スタイルが読み込まれず、ブラウザのコンソールでエラーが報告される。リソースはスタイルシートとして解釈されますが、MIMEタイプtext/htmlで転送されます。
-
IllegalArgumentException この例外を解決する方法
-
SpringBootApplication を型解決できない。
-
Android Studio 3.1.2 で v4, v7 パッケージが見つからない シンボル 'AppCompatActivity' を解決できない
-
node js npm gruntインストール、elasticsearch-head 5.Xインストール
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
が 'X-Frame-Options' を 'deny' に設定しているため、フレーム内にある。
-
[オリジナル】java学習ノート【II】よくあるエラー クラスパス上のクラスファイルが見つからない、またはアクセスできない場合
-
起動時にEclipseエラーが発生しました。起動中に内部エラーが発生しました。java.lang.NullPoin: "Javaツーリングの初期化 "中に内部エラーが発生しました。
-
コミットには何も追加されないが、未追跡のファイルが存在し、gitで未追跡のファイルに対する完璧な解決策