【问题标题】:Ant flagrantly ignoring JAVA_HOME environment variableAnt 公然忽略 JAVA_HOME 环境变量
【发布时间】:2012-12-03 00:20:39
【问题描述】:

我刚刚拿起最新版本的 Android SDK 并开始尝试使用它。与几乎所有提出此问题的人不同,我正在运行 Linux,即 Linux Mint 13。我目前正在尝试使用 ant 编译一个 Hello World 程序,安装方式为

sudo apt-get install ant

并在项目文件夹中运行:

ant debug

但是,它完全无法编译,最终出现与设置 JAVA_HOME 有关的错误。我相应地修改了我的~/.bashrc 文件并重新启动,但我仍然收到错误:

Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "/usr/lib/jvm/java-7-openjdk-amd64/jre"

Total time: 1 second
jamie@jamie-ThinkPad-E525 ~/Downloads/adt-bundle-linux/sdk/tools/projects/new $ echo $JAVA_HOME
/usr/java/jdk1.7.0_05/

如您所见,它正在咬牙切齿地撒谎。

我发现很多关于这个问题的参考资料,但大多数人要么错误地设置了他们的 JAVA_HOME,要么将其设置为 JRE。显然,我两者都没有。

我还修改了我的项目文件夹的ant.properties文件,添加了这一行

java.home=/usr/java/jdk1.7.0_05/

无济于事。

有没有其他人经历过/解决过这个问题,或者有什么想法?谢谢。

【问题讨论】:

  • 有文件~/.antrc吗? /etc/bashrc?
  • 也许ant shell 脚本最终会生成不来源~/.bashrc 的那种shell。您是否也尝试将其放入~/.profile

标签: java android bash ant environment-variables


【解决方案1】:

很有可能ant 说的是真话并且没有设置环境变量。机会是:

  • 您将错误的语句放入“.bashrc”文件中,或者
  • 您没有正确地重新启动

无论如何,您可以通过在运行 ant 命令之前在 shell 中运行 export 来验证这一点...并查看是否列出了 JAVA_HOME 变量。


提示:

1) 这是错误的:

JAVA_HOME=/usr/java/jdk1.7.0_05/

这只会创建一个本地 shell 变量,并且不会将本地 shell 变量传递给子进程(如 ant 命令)。应该是:

export JAVA_HOME=/usr/java/jdk1.7.0_05/

2) 尝试运行这个:

export JAVA_HOME=/usr/java/jdk1.7.0_05/
ant

3) 将java.home=/usr/java/jdk1.7.0_05/ 添加到 ant.properties 将无济于事。 Ant 需要环境变量中的设置。

4) 计算机程序不会说谎。他们说的是他们看到的真相。或者更准确地说,撒谎和说真话的整个概念是没有意义的,除非代理人有意图。但关键是,如果你开始怀疑计算机程序试图欺骗你,你将很难调试东西。

(好吧,你是在开玩笑。但是许多面临故障排除问题的人采取了类似的低效方法;例如,假设每个棘手的 Java 问题都是编译器/语言/运行时损坏的证据。IMO - 它是值得提醒人们,这种想法可能非常没有帮助....)

【讨论】:

  • 嗯,你知道吗,我确定我会使用export JAVA_HOME... 设置它,但在检查时,我实际上只是在本地设置它。谢谢你让我再次检查。当然,当我说这是在撒谎时,我是在开玩笑。我更认为它做错了什么。
  • What about: Ant 说的是真话,并且设置了环境变量。 stackoverflow.com/questions/16533256/…
  • 将环境变量设置在错误的位置(即 Ant 看不到的地方)而不设置它……就 Ant 而言……无法区分。当我说“环境变量未设置”时, ...我的意思显然是,它没有设置在Ant寻找它的地方;即在 环境中。
  • 环境变量的问题是很多人根本不了解它们是如何工作的。
【解决方案2】:

试试:

$ ant -diagnostics | grep java\\.home

如果不是你所期望的,那么

$ JAVA_HOME=/path/to/jdk ant -diagnostics | grep java\\.home

【讨论】:

  • Ant 报告其“java.home”的 java.lang.System 属性。这与环境中设置的 'JAVA_HOME' 不同。 Oracle HotSpot 代码按设计将“/jre”添加到“java.home”路径的末尾。
【解决方案3】:

我有一台装有 ant 1.9.1 的服务器。它需要一个环境变量 ANT_RESPECT_JAVA_HOME 集,否则它将公然忽略 JAVA_HOME 环境变量。在另一台装有 ant 1.9.6 的服务器上,情况似乎并非如此。

因此,根据您的 ant 版本,您可能需要添加

export ANT_RESPECT_JAVA_HOME=true

除了

export JAVA_HOME=/usr/java/jdk1.7.0_05/

希望这对某人有所帮助,因为我花了很长时间才发现...

【讨论】:

    猜你喜欢
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多