Ant公然忽略JAVA_HOME环境变量

Qua*_*lia 3 java ant bash android environment-variables

我刚拿起最新版本的Android SDK并开始尝试使用它.不像其他几乎所有人都提出这个问题,我正在运行Linux,即Linux Mint 13.我正在尝试使用ant编译Hello World程序,通过安装

sudo apt-get install ant
Run Code Online (Sandbox Code Playgroud)

并在项目文件夹中运行:

ant debug
Run Code Online (Sandbox Code Playgroud)

然而,它完全无法编译,最终吐出与设置有关的错误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/
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它正在通过牙齿说谎.

我发现了很多关于这个问题的引用,但是大多数人都没有错误地设置它们的JAVA_HOME,或者将它设置为JRE.显然,我没有做过.

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

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

无济于事.

有没有其他人经历/解决这个问题,或有任何想法?谢谢.

Ste*_*n C 5

很可能ant是说实话,而环境变量没有设定.可能性是:

  • 你把错误的语句放入".bashrc"文件中,或者
  • 你没有正确重启.

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


提示:

1)这是错的:

JAVA_HOME=/usr/java/jdk1.7.0_05/
Run Code Online (Sandbox Code Playgroud)

这只会创建一个本地shell变量,并且本地shell变量不会传递给子进程(就像ant命令一样).它应该是:

export JAVA_HOME=/usr/java/jdk1.7.0_05/
Run Code Online (Sandbox Code Playgroud)

2)尝试运行:

export JAVA_HOME=/usr/java/jdk1.7.0_05/
ant
Run Code Online (Sandbox Code Playgroud)

3)添加java.home=/usr/java/jdk1.7.0_05/到ant.properties将无济于事.Ant期望在环境变量中进行设置.

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

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