Ant公然忽略JAVA_HOME环境变量

时间:2012-12-15 00:32:32

标签: java android bash ant environment-variables

我刚拿起最新版本的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/

无济于事。

还有其他人经历过/解决过这个问题,还是有任何想法?感谢。

3 个答案:

答案 0 :(得分:5)

ant说实话并且未设置环境变量的可能性很大。可能性是:

  • 您将错误的陈述放入“.bashrc”文件或
  • 您没有正确重启

无论如何,您可以通过在shell中运行export来运行ant命令...并查看是否列出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)向ant.properties添加java.home=/usr/java/jdk1.7.0_05/无济于事。 Ant期望在环境变量中进行设置。

4)计算机程序不骗人。当他们看到时,他们说实话。或者更准确地说,除非代理人有意图,否则撒谎和说实话的整个概念都是毫无意义的。但重点是,如果你开始怀疑试图欺骗你的计算机程序,你将很难调试事情。

(好吧,你是在开玩笑。但是很多人面临故障排除问题采取了类似的非生产性方法;例如,假设每个棘手的Java问题都证明编译器/语言/运行时已被破坏.IMO - 它是值得提醒人们,这种想法可能非常无益......)

答案 1 :(得分:0)

尝试:

$ ant -diagnostics | grep java\\.home

如果不符合您的期望,那么

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

答案 2 :(得分:0)

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

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

export ANT_RESPECT_JAVA_HOME=true

除了

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

希望这可以帮助别人,因为它花了我太长时间才发现......