web-dev-qa-db-ja.com

$ {env.Java_HOME}が見つかりません-Ant

私のbuild.xmlファイルには、次の行があります。

<property environment="env"/>
<echo message="Java_HOME is set to = ${env.Java_HOME}" />

一部のマシンでは、これは印刷されます

"Java_HOME is set to = /usr/jdk1.6"

しかし、他のいくつかでは、これを印刷します

"Java_HOME is set to = ${env.Java_HOME}"

誰がこれを引き起こすのかを知っていますか?

ありがとう

14
One Two Three

このメッセージは、Antがプロパティenv.Java_HOMEを解決できなかったことを示しています。これは、そのマシンで環境変数Java_HOMEが設定されていなかったことを意味します。

12
smooth reggae

which antまたはtype antを実行することで、実際のantコマンドが存在するシステム(UNIXの場合)を通常見つけることができます。その場所を見ると、通常は$ANT_HOMEディレクトリの下の実際のantコマンドへのリンクであることがわかります。

このスクリプトを見てください。それらの多くは、$ANT_HOME$Java_HOMEがデフォルトで環境に設定されていない場合、これらが存在する場所を正確に特定しようとするだけです。

antシェルスクリプトに表示されないものは次のとおりです。

 EXPORT Java_HOME

そのため、$Java_HOMEantスクリプト内で設定されていても、環境にエクスポートされることはありません(誰かがantシェルスクリプトを変更していない限り] . If an environment variable is not exported, it is unavailable to child processes -- like theJavachild process running yourant `プロセス。

したがって、antが実行される前に$Java_HOMEが設定されていないマシンを使用している場合は、ビルドスクリプトで使用できません。

ただし、AntとJava(AntはJavaプロセス)であるため)は、使用できるデフォルトのプロパティをすべてセットアップします。Antを実行すると、 独自の組み込みプロパティ${ant.home}などを含みます。また、Javaが実行されると、Javaも設定されます Javaプロパティ の完全なリストは${Java.home}のようになります。

したがって、Java_HOMEディレクトリの場所を本当に知る必要がある場合は、環境変数${Java.home}に依存せず、プロパティ$Java_HOMEを使用してください。

これらのプロパティのリストを取得するには、次のAntビルドファイルを実行します。

<project>
    <echoproperties/>
</project>
7
David W.