• ベストアンサー

環境変数の取得について

Javaプログラムで環境変数を取得することって可能ですか?? 例えば任意の環境変数%TEST%なんかを設定してから実行したら 取得可能ですか??(OSはUnix上です) もしくはプロパティファイルかなんか設定ファイルを使用しても良いと考えているのですが、Unix上でResourceBundleクラスを使用するとき、ファイルの配置場所はどこにあれば良いのでしょうか??

  • sting
  • お礼率12% (35/274)
  • Java
  • 回答数4
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

System.getPropertyはOSの環境変数にアクセスするメソッドではないと思います。JavaVMで用意しているプロパティに限定してアクセス可能なはずです。そのため質問者の期待する「任意の環境変数を設定した場合」には対応できないと思います。(必ずnullになってしまう) ゆえに、この場合にはSystem.getenvを使用せざるを得ないと思います。 (使用したことがないので自信なしですが、もしかしたらSystem.getPropertyでも「任意の環境変数」を取得する方法があるかもしれません。) System.getenvが推奨されない理由は、このメソッドがOSに直接アクセスしてしまうため、OS依存になってしまう点にあると思います。「Write Once, Run Anywhere(一度書けば、どこででも実行する)」に反するということです。しかし、動作環境を変更しどのOSでも動かしたいという希望がないのであれば、この非推奨の理由は無意味なものになると思います。 結論として、System.getPropertyは使用できない。System.getenvは非推奨であっても気にせず使用してかまわないということになると思います。 5.0で、非推奨でなくなった理由はよくわかりません。が、代替方法がなく、また場合により必要になることもあるため、「非推奨」の意味を見直した結果なのかなーなどと思います。 >Unix上でResourceBundleクラスを使用するとき、ファイルの配置場所はどこにあれば良いのでしょうか?? クラスファイルと同じディレクトリです。相対パスでの記述も可能です。気をつけなければならないのは、ResourceBundle.getBundleで指定するのは拡張子なしのファイル名を指定することと、実ファイルには「properties」という拡張子をつけなければならないことでしょうか。また、ResourceBundleは多言語対応も可ですが、ここでは関係なさそうなので説明は省きます。

参考URL:
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/System.html#getProperties()

その他の回答 (3)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>obsolete #2様 私は、javaの経験が少ないのでご指摘ありがたく思います。(勉強になります) でも http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/System.html#getenv(java.lang.String) 1.4のdocsでは非推奨ですが http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/System.html#getenv(java.lang.String) 1.5のdocsでは非推奨ではありません。 ケースバイケースだと思われますが・

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.2

No.1さん、わざわざobsoleteなメソッドを教えんでも。 Javadocを見れば書いてますが、Java1.2以降では代わりにSystem.getPropertyを使いましょう。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

>環境変数を取得 System.getenv(String name) できると思います。 System.getenv("TEST"); UNIXの場合大文字小文字を区別するらしいので注意

関連するQ&A

  • 環境変数の取得

    はじめまして。VB6.0で開発を行っております。 その中で環境変数の取得をしたいと思っております。 環境変数の取得には、「Environ」関数を使用しております。この関数では、ユーザが設定した環境変数は取得できないのでしょうか? システムをインストールする際に環境変数の設定を行っております。その後、システムでその環境変数を取得したいと思っているのですが、うまく取得できません。 「Path」とかであれば取得できるのですが・・・。 それと、マイコンピュータのプロパティから環境変数を調べてみたところちゃんと設定されています。 よろしくお願いします。

  • 環境変数についてー

    こんにちわ! 昨日も投稿しました環境変数についてです。 Javaプログラミングを行っていて、コンパイル→実行…といきたいのですが 実行がどうしてもできない!! 様々な原因を探り、確認しなおしてきても未だに実行できていません。 問題は環境変数の設定の仕方にあるようなのです。 そこで質問なのですが、ユーザー環境変数とシステム環境変数の PATHや CLASSPATH 、JAVA_HOME は同じ設定にしなくてはいけないのでしょうか??  どうかこの疑問についてアドバイスを、どうぞ宜しくお願い致します!

    • ベストアンサー
    • Java
  • 環境変数がおかしいのでしょうか?

    現在家のパソコンを使いJavaの勉強をしております。 家で使用しているパソコンとは違うのにj2sdk1.4.2_01をインストールして勉強しようと考えていました。 それで、J2SDK1.4.2_01をインストールしてユーザーの環境変数に以下のようなものを新規で作りました。 JAVA_HOME C:\j2sdk1.4.2_01 PATH %JAVA_HOME%\bin CLASSPATH .;%JAVA_HOME%\lib\tools.jar それで家で作ったjavaファイル、classファイルをインストールしたパソコンにコピーしました。 実際に正しく設定されているか確認するため、javaファイルのあるディレクトリに移動し javac Sample.java (作ったjavaファイルをSample.javaとした場合) とコマンドしたところ 「'javac'は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。」 と表示されました。 家のパソコンと同じようにしたのにおかしいと思い、一応classファイルもコピーしたので java Sample とタイプし実行してみました。 そうすると実行はできたんです。 なぜコンパイルはできなかったんでしょうか? 環境変数の設定がおかしいのでしょうか?

    • ベストアンサー
    • Java
  • Javaで環境変数の取得

    お世話になります。 JavaからWindowsの環境変数を取得することはできますか? windowsで環境変数XYZを作ってそれを Javaで読み込みたいのです。 System.getProperty("XYZ")でとれるのかとおもったのですがとれませんしたので、もしかしたら無理なのかもしれませんが... 以上よろしくお願いいたします。

    • ベストアンサー
    • Java
  • 環境変数とクラスパスについて

    いつもお世話になっております。 今回は環境変数とクラスパスについて伺いたいと思います。 環境変数とは何なのか?どのようなときに影響があるのか? を教えていただければと思っています。 さらにクラスパスについてですが、たとえばjavaのクラスファイルのある場所を指していると解釈していいものなのでしょうか? 漠然としかわかってないので教えていただければとおもいます。 よろしくお願いいたします。

  • 環境変数の設定について

    javaの開発環境を設定する際、PATH環境変数の設定を行うよう多数のサイトで拝見しましたが、これにはどんな意味があるのでしょうか? ちなみに私はPATHの環境変数の設定を行わずに、以下の環境の下で簡易プログラムを実行したところ、正確な出力結果を得られました。 開発環境…eclipse javaプラットホーム…JDK 6 Update 18 環境変数を設定しなくとも正常にプログラムを行うことができると思うのですが、環境変数の設定によって何がどう変わるのか具体的に詳しく教えていただけると助かります。 どうかよろしくお願いします。

    • ベストアンサー
    • Java
  • 同時に環境変数を変えることはできるのでしょうか・

    javaのプログラミングの勉強をしていて、ついでにC言語の勉強をはじめようと思ったのですが、環境変数のところでいきなりつまずいています。 javaの環境変数はきちんと設定されているのですが 新しくC言語の環境変数を通すと、以前のjavaで設定 した環境変数を消すことになってしまいます。 javaとc言語のpathの環境変数を同時に設定したまま 残すことはできないのでしょうか? どなたかお願いします!!

  • 環境変数が間違ってるの??

    JAVA初心者です、他のHPをみたら環境変数の設定が間違っているとでたのですが、環境変数の設定がよくわかりません。 JAVAのVERSIONは 1.6.0_07 です。何度も試してみたのですがダメでした。OTLどなたか教えてください。

  • 環境変数の追加について

    WindowsXP Pro sp2です。 『システムのプロパティ』の『詳細設定』タブ内の『環境変数』ボタンを押すと『(ユーザ名)のユーザ環境変数』とありますが、ここに任意のpath情報を追加しても問題ありませんでしょうか。 影響があるとすればどういった場合が考えられるでしょうか。 他の環境変数に設定してあるものと重複するものではありません。 また『システム環境変数』に追加することも問題ないのでしょうか。 『ユーザ環境変数』に追加した方が無難かとは思っていますが・・・。 よろしくお願いいたします。

  • javaの環境変数設定について

    環境変数の設定で別バージョンのJavaが設定されます。 システムの環境変数にPathがあるので、 最後にC:\j2sdk1.4.2_18\bin;と設定したのですが、 この際、システムのプロパティーの適用がグレー表示です。 古いバージョンの1.6.0_07の設定を削除するにもPathのどこにあるのかわかりません。 プログラムファイルのJavaフォルダー内に新しいのとire1.6.0_07フォルダーがあります。 このフォルダーを削除しても新しいのが設定されません。

    • ベストアンサー
    • Java

専門家に質問してみよう