- - PR -
getenvの仕様について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-04-15 20:39
いつもお世話になっています。
現在、Windows上で動作しているアプリケーションを、Linux上に移行しています。 getenvメソッドでWindows上なら環境変数を取得できますが、Linux上では環境変数を取得できません。なお、プロジェクトはWindows上でビルドしています。 getenvはOSに依存しているのでしょうか。また、Linux上でビルドすればgetenvで環境変数を取得できるのでしょうか。 そのへんの仕様をご存じでしたら教えてください。 以上、よろしうお願いします。 | ||||
|
投稿日時: 2008-04-15 21:13
いや,linuxでもgetenvはありますけど。使用方法を確認してください。
#include <stdlib.h> char *getenv(const char *name); | ||||
|
投稿日時: 2008-04-15 21:34
Javaでしょ?
OSが違ったら、同じ環境変数が必ず存在する、とは限らんけどね。 | ||||
|
投稿日時: 2008-04-15 21:40
Javaですから、ビルドし直しても変わりません。
* Java のバージョンは? Java 1.4 以前だと getenv() は実装されてないかもしれません。 * 環境変数が取れないことをどうやって確認したか、詳細な手順を | ||||
|
投稿日時: 2008-04-15 23:16
JDK5でJDK1.4のバイトコードでコンパイルしたものを、
WindowsでJRE5で動かしていて動いたと確認して、 LinuxではJRE1.4だったってこととかありませんか? | ||||
|
投稿日時: 2008-04-16 15:26
皆さん、アドバイスありがとうございます。
補足説明と中間報告をしたいと思います。 以下の条件で検証を行っています。 [Windows 2003 Server R2 SP2] ・Javaは 1.6.0._04、Runtime Environment は 1.6.0_04-b12 である。 ・システム環境変数に登録している。ファイル名をしている。 ex) FogefogeFOGE=c:\test\test.properties ・set で環境変数が反映していることは確認した。 [Red Hat Enterprise Linux 4] ・VMWare Server 上で動作している。 ・Javaは 1.6.0._05、Runtime Environment は 1.6.0_05-b13 である。 ・ユーザはrootで、.bashrcに環境変数を登録している。 ・set で環境変数が反映していることは確認した。 ・ログファイルに、settingFile が null と表示していた。 ex)環境変数の取得に失敗しました。:null 以下に、ログを出力しているソースコードの部分を示す。 ----- ここから ----- String settingFile = System.getenv("FogefogeFOGE"); if(settingFile == null){ logUtil.writeDebugLog("環境変数の取得に失敗しました。:" + settingFile); SettingValues.StopService(); return; } ・・・ ----- ここまで ----- 作業手順は以下の通りです。 Windows上のEclipseでビルドしてから、****.warファイルでエクスポートします。 次に、Red Hat Enterprise Linux のTomcatに****.warをデブロイしています。 環境変数が取得できない場合は、サービスを停止します。 これから、Linux上にEclipseを入れて動作検証をしてみます。 以上、よろしくお願いします。 | ||||
|
投稿日時: 2008-04-16 15:26
皆さん、アドバイスありがとうございます。
補足説明と中間報告をしたいと思います。 以下の条件で検証を行っています。 [Windows 2003 Server R2 SP2] ・Javaは 1.6.0._04、Runtime Environment は 1.6.0_04-b12 である。 ・システム環境変数に登録している。ファイル名をしている。 ex) FogefogeFOGE=c:\test\test.properties ・set で環境変数が反映していることは確認した。 [Red Hat Enterprise Linux 4] ・VMWare Server 上で動作している。 ・Javaは 1.6.0._05、Runtime Environment は 1.6.0_05-b13 である。 ・ユーザはrootで、.bashrcに環境変数を登録している。 ・set で環境変数が反映していることは確認した。 ・ログファイルに、settingFile が null と表示していた。 ex)環境変数の取得に失敗しました。:null 以下に、ログを出力しているソースコードの部分を示す。 ----- ここから ----- String settingFile = System.getenv("FogefogeFOGE"); if(settingFile == null){ logUtil.writeDebugLog("環境変数の取得に失敗しました。:" + settingFile); SettingValues.StopService(); return; } ・・・ ----- ここまで ----- 作業手順は以下の通りです。 Windows上のEclipseでビルドしてから、****.warファイルでエクスポートします。 次に、Red Hat Enterprise Linux のTomcatに****.warをデブロイしています。 環境変数が取得できない場合は、サービスを停止します。 これから、Linux上にEclipseを入れて動作検証をしてみます。 以上、よろしくお願いします。 | ||||
|
投稿日時: 2008-04-16 15:57
どうやって記述していますか? ちゃんと export していますか? |