環境変数
日本語 | 環境変数 |
英語 | environment variable |
ふりがな | かんきょうへんすう |
フリガナ | カンキョウヘンスウ |
OSが持つ変数。
プログラム内部ではなく、OS単位で持つ変数。各種アプリケーションが共通して使用する値を格納する。ある意味究極のグローバル変数。
昔のOS、特にUNIX系のOSは、通常のプログラムやアプリケーション、コマンドが、いわゆる「関数」のように機能していたため、共通にアクセスできる変数が必要だった。それが環境変数である。
現在は、環境変数は「文字列定数」を格納するためのものとして使用されることが多い。
設定方法はOSによって異なり、また、OSによっては環境変数を持たないものもある。
Javaでは、コンパイルや実行のために「JAVA_HOME」と「PATH」の環境変数を設定する必要がある。
また、Java用ツールの多くも環境変数を設定する必要がある。
そのため、Javaを使用する上で環境変数は不可欠となっており、Javaを使用する上でのハードルのひとつとなっている。
Javaプログラム中で環境変数を取得する場合、Systemクラスのgetenv()メソッドを使用する。
ただし、このメソッドはJ2SE1.4では使用できない。それ以前のバージョンや、J2SE5.0では使用可能であるが、現在のメジャーバージョンでは使用できないことになる。
これは、環境変数そのものが推奨されていないためである。JavaはあらゆるOSで実行できることを目標としているため、環境変数を持たないOS等を考慮して、環境変数の使用を避ける狙いがあるためである。
実際、環境変数の使用はOSの環境に依存するため、あまり勧められない。
また、環境変数で得られる情報の多くは、SystemクラスのgetProperty()メソッドで取得できるため、環境変数を直接取得する必要がない場合も多い。
どうしても環境変数を必要とする場合、OS固有の「環境変数を取得するコマンド」を実行し、その結果を元に取得する必要ことになる。
プログラム内部ではなく、OS単位で持つ変数。各種アプリケーションが共通して使用する値を格納する。ある意味究極のグローバル変数。
昔のOS、特にUNIX系のOSは、通常のプログラムやアプリケーション、コマンドが、いわゆる「関数」のように機能していたため、共通にアクセスできる変数が必要だった。それが環境変数である。
現在は、環境変数は「文字列定数」を格納するためのものとして使用されることが多い。
設定方法はOSによって異なり、また、OSによっては環境変数を持たないものもある。
Javaでは、コンパイルや実行のために「JAVA_HOME」と「PATH」の環境変数を設定する必要がある。
また、Java用ツールの多くも環境変数を設定する必要がある。
そのため、Javaを使用する上で環境変数は不可欠となっており、Javaを使用する上でのハードルのひとつとなっている。
Javaプログラム中で環境変数を取得する場合、Systemクラスのgetenv()メソッドを使用する。
ただし、このメソッドはJ2SE1.4では使用できない。それ以前のバージョンや、J2SE5.0では使用可能であるが、現在のメジャーバージョンでは使用できないことになる。
これは、環境変数そのものが推奨されていないためである。JavaはあらゆるOSで実行できることを目標としているため、環境変数を持たないOS等を考慮して、環境変数の使用を避ける狙いがあるためである。
実際、環境変数の使用はOSの環境に依存するため、あまり勧められない。
また、環境変数で得られる情報の多くは、SystemクラスのgetProperty()メソッドで取得できるため、環境変数を直接取得する必要がない場合も多い。
どうしても環境変数を必要とする場合、OS固有の「環境変数を取得するコマンド」を実行し、その結果を元に取得する必要ことになる。
参考サイト
// Sample.java
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;
public class Sample
{
public static void main( String[] args )
{
try
{
// Systemクラスのgetenv()メソッドは、J2SE1.4では使用できません。
String JAVA_HOME = System.getenv( "JAVA_HOME" );
// 警告:
// メソッド getenv(String) は型 System で使用すべきではありません。
}
catch( Error e )
{
e.printStackTrace();
// java.lang.Error: getenv no longer supported, use properties and -D instead: JAVA_HOME
// at java.lang.System.getenv(System.java:689)
// at Sample.main(Sample.java:11)
}
try
{
// 環境変数の取得は、J2SEでは、OSのコンソールで使用する
// コマンドを叩いて取得することになります。無理矢理ですが。
// 以下、Windowsの場合。
// command.com /c SET
// で、環境変数一覧を取得します。
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec( "cmd /c set" );
// コマンドの結果を取得するためのストリームを取得します。
InputStream inputStream = process.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader( inputStream );
while( true )
{
// read()メソッドでファイルから1バイト取得します。
int i = inputStreamReader.read();
if( i == -1 )
{
// -1が来たら終了です。
break;
}
// 出力します。
System.out.print( (char)i );
}
/*
JAVA_HOME=D:\Java\j2sdk1.4.2_09
OS=Windows_NT
PROCESSOR_ARCHITECTURE=x86
以下略
*/
// こうして取得した文字列を分解して取得するしかないでしょう。
}
catch( IOException e )
{
e.printStackTrace();
}
}
}
/*
Windowsの場合、環境変数は以下のように設定します。
コントロールパネルの「システム」をダブルクリックして、
「システムのプロパティ」ダイアログを表示してください。
この「詳細」ページの「環境変数」ボタンを押してください。
「環境変数」ダイアログが表示されます。このダイアログで、
環境変数を設定します。
「システム環境変数」の「新規」ボタンを押してください。
「新しいシステム変数」ダイアログが表示されます。
「変数名」は環境変数の名前を指定します。
「変数値」は、その環境変数に入れる値を指定します。
たとえば、JAVA_HOMEの設定は以下のようにします。
変数名:
JAVA_HOME
変数値:
(1.でインストールした、J2SEのフォルダ。たとえば
C:\Java\j2sdk1.4.2_09
のように)
入力したら「OK」ボタンを押して閉じて、さらに
「環境変数」ダイアログと「システムのプロパティ」ダイアログも「OK」
ボタンを押してください。
以上で、環境変数の設定が完了しました。
コンソール(DOS窓)で
cmd /c set
と入力すれば、環境変数一覧が表示されるので、その中に追加した
環境変数が表示されるはずです。
また、
echo %環境変数名%
と入力すれば、指定した環境変数の値を出力することができます。
*/
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;
public class Sample
{
public static void main( String[] args )
{
try
{
// Systemクラスのgetenv()メソッドは、J2SE1.4では使用できません。
String JAVA_HOME = System.getenv( "JAVA_HOME" );
// 警告:
// メソッド getenv(String) は型 System で使用すべきではありません。
}
catch( Error e )
{
e.printStackTrace();
// java.lang.Error: getenv no longer supported, use properties and -D instead: JAVA_HOME
// at java.lang.System.getenv(System.java:689)
// at Sample.main(Sample.java:11)
}
try
{
// 環境変数の取得は、J2SEでは、OSのコンソールで使用する
// コマンドを叩いて取得することになります。無理矢理ですが。
// 以下、Windowsの場合。
// command.com /c SET
// で、環境変数一覧を取得します。
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec( "cmd /c set" );
// コマンドの結果を取得するためのストリームを取得します。
InputStream inputStream = process.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader( inputStream );
while( true )
{
// read()メソッドでファイルから1バイト取得します。
int i = inputStreamReader.read();
if( i == -1 )
{
// -1が来たら終了です。
break;
}
// 出力します。
System.out.print( (char)i );
}
/*
JAVA_HOME=D:\Java\j2sdk1.4.2_09
OS=Windows_NT
PROCESSOR_ARCHITECTURE=x86
以下略
*/
// こうして取得した文字列を分解して取得するしかないでしょう。
}
catch( IOException e )
{
e.printStackTrace();
}
}
}
/*
Windowsの場合、環境変数は以下のように設定します。
コントロールパネルの「システム」をダブルクリックして、
「システムのプロパティ」ダイアログを表示してください。
この「詳細」ページの「環境変数」ボタンを押してください。
「環境変数」ダイアログが表示されます。このダイアログで、
環境変数を設定します。
「システム環境変数」の「新規」ボタンを押してください。
「新しいシステム変数」ダイアログが表示されます。
「変数名」は環境変数の名前を指定します。
「変数値」は、その環境変数に入れる値を指定します。
たとえば、JAVA_HOMEの設定は以下のようにします。
変数名:
JAVA_HOME
変数値:
(1.でインストールした、J2SEのフォルダ。たとえば
C:\Java\j2sdk1.4.2_09
のように)
入力したら「OK」ボタンを押して閉じて、さらに
「環境変数」ダイアログと「システムのプロパティ」ダイアログも「OK」
ボタンを押してください。
以上で、環境変数の設定が完了しました。
コンソール(DOS窓)で
cmd /c set
と入力すれば、環境変数一覧が表示されるので、その中に追加した
環境変数が表示されるはずです。
また、
echo %環境変数名%
と入力すれば、指定した環境変数の値を出力することができます。
*/
// Sample.java import java.io.InputStream; import java.io.InputStreamReader; import java.io.IOException; public class Sample { public static void main( String[] args ) { try { // Systemクラスのgetenv()メソッドは、J2SE1.4では使用できません。 String JAVA_HOME = System.getenv( "JAVA_HOME" ); // 警告: // メソッド getenv(String) は型 System で使用すべきではありません。 } catch( Error e ) { e.printStackTrace(); // java.lang.Error: getenv no longer supported, use properties and -D instead: JAVA_HOME // at java.lang.System.getenv(System.java:689) // at Sample.main(Sample.java:11) } try { // 環境変数の取得は、J2SEでは、OSのコンソールで使用する // コマンドを叩いて取得することになります。無理矢理ですが。 // 以下、Windowsの場合。 // command.com /c SET // で、環境変数一覧を取得します。 Runtime runtime = Runtime.getRuntime(); Process process = runtime.exec( "cmd /c set" ); // コマンドの結果を取得するためのストリームを取得します。 InputStream inputStream = process.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader( inputStream ); while( true ) { // read()メソッドでファイルから1バイト取得します。 int i = inputStreamReader.read(); if( i == -1 ) { // -1が来たら終了です。 break; } // 出力します。 System.out.print( (char)i ); } /* JAVA_HOME=D:\Java\j2sdk1.4.2_09 OS=Windows_NT PROCESSOR_ARCHITECTURE=x86 以下略 */ // こうして取得した文字列を分解して取得するしかないでしょう。 } catch( IOException e ) { e.printStackTrace(); } } } /* Windowsの場合、環境変数は以下のように設定します。 コントロールパネルの「システム」をダブルクリックして、 「システムのプロパティ」ダイアログを表示してください。 この「詳細」ページの「環境変数」ボタンを押してください。 「環境変数」ダイアログが表示されます。このダイアログで、 環境変数を設定します。 「システム環境変数」の「新規」ボタンを押してください。 「新しいシステム変数」ダイアログが表示されます。 「変数名」は環境変数の名前を指定します。 「変数値」は、その環境変数に入れる値を指定します。 たとえば、JAVA_HOMEの設定は以下のようにします。 変数名: JAVA_HOME 変数値: (1.でインストールした、J2SEのフォルダ。たとえば C:\Java\j2sdk1.4.2_09 のように) 入力したら「OK」ボタンを押して閉じて、さらに 「環境変数」ダイアログと「システムのプロパティ」ダイアログも「OK」 ボタンを押してください。 以上で、環境変数の設定が完了しました。 コンソール(DOS窓)で cmd /c set と入力すれば、環境変数一覧が表示されるので、その中に追加した 環境変数が表示されるはずです。 また、 echo %環境変数名% と入力すれば、指定した環境変数の値を出力することができます。 */