未找到 $env.JAVA_HOME - Ant
Posted
技术标签:
【中文标题】未找到 $env.JAVA_HOME - Ant【英文标题】:$env.JAVA_HOME not found - Ant未找到 $env.JAVA_HOME - Ant 【发布时间】:2013-07-08 10:32:22 【问题描述】:在我的 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"
有人知道是什么原因造成的吗?
谢谢
【问题讨论】:
【参考方案1】:消息告诉您 Ant 无法解析属性 env.JAVA_HOME
;这意味着该机器上没有设置环境变量JAVA_HOME
。
【讨论】:
如果没有设置JAVA_HOME,那项目怎么可能建? (这是一个 Java 项目) Ant 不需要您设置JAVA_HOME
(您可能已经知道,因为即使在未设置JAVA_HOME
的机器上也可以执行构建文件)
好的,现在说得通了。谢谢【参考方案2】:
您通常可以通过执行which ant
或type ant
在您的系统(如果您是Unix)上找到实际的ant
命令所在的位置。如果您查看该位置,您通常会看到它是指向$ANT_HOME
目录下的实际ant
命令的链接。
看看这个脚本。如果环境中没有默认设置$ANT_HOME
和$JAVA_HOME
,其中大部分只是试图确定它们的确切位置。
您在ant
shell 脚本中看不到的是:
EXPORT JAVA_HOME
因此,即使$JAVA_HOME
设置在ant
脚本中,它也永远不会导出到环境中(除非有人修改了ant
shell 脚本. If an environment variable is not exported, it is unavailable to child processes -- like the
javachild process running your
ant` 进程。
因此,如果您所在的计算机在执行 ant
之前未设置 $JAVA_HOME
,则它在您的构建脚本中将不可用。
但是,Ant 和 Java(因为 Ant 是一个 Java 进程)都设置了一系列您可以使用的默认属性。当 Ant 执行时,它设置为own built in properties,其中包括$ant.home
之类的内容。并且,Java 执行时,Java 也会像$java.home
一样设置Java Properties 的完整列表。
因此,如果您确实需要知道您的 JAVA_HOME 目录的位置,请使用属性$java.home
,而不是依赖环境变量$JAVA_HOME
。
如果您想获取这些属性的列表,请运行以下 Ant 构建文件:
<project>
<echoproperties/>
</project>
【讨论】:
这应该被标记为正确答案..因为它包含了 OP 正在寻找的答案...... 好吧,这是错误的。$java.home
肯定不会告诉 JAVA_HOME 在哪里,只有环境变量会告诉。 $java.home
会告诉 JRE 在哪里执行,这是另一回事。以上是关于未找到 $env.JAVA_HOME - Ant的主要内容,如果未能解决你的问题,请参考以下文章