未找到 $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 anttype 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 thejavachild process running yourant` 进程。

因此,如果您所在的计算机在执行 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的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins 脚本管道声纳集成

maven属性资源过滤profile不同环境构建项目

CDH商业版本的搭建

Gradle、rt.jar 访问限制

未找到配置文件:未找到未过期的配置文件

aidlux,显示命令未找到