- PR -

getenvの仕様について

投稿者投稿内容
EAST
会議室デビュー日: 2007/04/19
投稿数: 9
投稿日時: 2008-04-15 20:39
いつもお世話になっています。

現在、Windows上で動作しているアプリケーションを、Linux上に移行しています。

getenvメソッドでWindows上なら環境変数を取得できますが、Linux上では環境変数を取得できません。なお、プロジェクトはWindows上でビルドしています。

getenvはOSに依存しているのでしょうか。また、Linux上でビルドすればgetenvで環境変数を取得できるのでしょうか。

そのへんの仕様をご存じでしたら教えてください。

以上、よろしうお願いします。
deanna
大ベテラン
会議室デビュー日: 2004/08/23
投稿数: 118
投稿日時: 2008-04-15 21:13
いや,linuxでもgetenvはありますけど。使用方法を確認してください。

#include <stdlib.h>
char *getenv(const char *name);

さいくろう
大ベテラン
会議室デビュー日: 2005/11/19
投稿数: 170
お住まい・勤務地: 川崎市
投稿日時: 2008-04-15 21:34
Javaでしょ?
OSが違ったら、同じ環境変数が必ず存在する、とは限らんけどね。
スフレ
ぬし
会議室デビュー日: 2005/05/27
投稿数: 281
お住まい・勤務地: 東京
投稿日時: 2008-04-15 21:40
Javaですから、ビルドし直しても変わりません。

* Java のバージョンは? Java 1.4 以前だと getenv() は実装されてないかもしれません。
* 環境変数が取れないことをどうやって確認したか、詳細な手順を
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-04-15 23:16
JDK5でJDK1.4のバイトコードでコンパイルしたものを、
WindowsでJRE5で動かしていて動いたと確認して、
LinuxではJRE1.4だったってこととかありませんか?
EAST
会議室デビュー日: 2007/04/19
投稿数: 9
投稿日時: 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を入れて動作検証をしてみます。

以上、よろしくお願いします。
EAST
会議室デビュー日: 2007/04/19
投稿数: 9
投稿日時: 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を入れて動作検証をしてみます。

以上、よろしくお願いします。
スフレ
ぬし
会議室デビュー日: 2005/05/27
投稿数: 281
お住まい・勤務地: 東京
投稿日時: 2008-04-16 15:57
引用:

・ユーザはrootで、.bashrcに環境変数を登録している。



どうやって記述していますか? ちゃんと export していますか?

スキルアップ/キャリアアップ(JOB@IT)