2012-01-05 6 views
2

コマンドラインから引数を取得するjarファイルがあり、環境変数を含むパラメータを与えたいと思います。以下のような何か:環境変数を引数として与える

java -jar MyDev.jar -f %PROJECT_HOME%/src/test 

しかし、上記の場合にはプログラムがシステム内PROJECT_HOME値が/home/jackパスであることを私が欲しいしかし%PROJECT_HOME%という名前のディレクトリを作成します。プログラムは/home/jack/src/testでなく、%PROJECT_HOME%/src/testパスに従ってください。

どうすればいいですか?

+0

WindowsまたはUnix – RanRag

+0

コマンドライン引数をどのように展開するかを決定するのは、そのシェルまでです。 Javaはそれをさらに解析することができますが、DOSシェルが期待どおりに動作しない理由を理解することをお勧めします。 –

+0

%USERPROFILE%を単純な1行のテストクラスに渡してみましたが、これは入力引数をSystem.outにのみ出力します。私の場合は、変数が正しく私の家のdirに翻訳されました。 Javaプログラムを起動する前に 'echo%PROJECT_HOME%'を実行することによって変数が定義されていることを確認しましたか? – Alderath

答えて

4

これはUnixシェルで実行していますか?もしそうなら、私はあなただけしたい疑う:%を使用して

java -jar MyDev.jar -f ${PROJECT_HOME}/src/test 

は、環境変数の指定のWindowsの方法です - /home/jackのホームディレクトリに収まるように表示されません...

+0

私はWindows上で走っています。例えば、/ home/jackに与えました。 – emin

+0

@emin:これについては明示的に説明し、より代表的な例を使用すると便利です。コマンドプロンプトから実行しているのですか、それとも別の方法で起動していますか? –

2

を担当するコンポーネント環境変数の代わりに、シェル/コマンドライン・プロセッサー(Windowsではcmd.exe)を使用します。

public static void main(String[] args) { 
    System.out.println(args[0]); 
} 

私は、Eclipse内からそれを実行し、引数として "%のPATH%" を渡す%PATH%をプリントアウト:

は、私は次の main方法を書きました。コマンドラインから実行すると、実際のパス環境変数が出力されます。

System.getenv()を使用すると、Javaコードから環境変数にアクセスできます。 たとえば、System.out.println(System.getenv("PATH"))は、Eclipseとコマンドラインの両方から実際のパス変数を出力します。

0

変数PROJECT_HOMEが定義されていないか、スペルが間違っている可能性があります。したがって、あなたがすでにそうしていない限り、変数が定義されていることを確認するためにjavaプログラムを起動する直前にecho %PROJECT_HOME%を実行するべきです。