4

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

无济于事。

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

4

3 回答 3

5

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

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

无论如何,您可以通过export在运行命令之前在 shell 中运行来验证这一点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)添加java.home=/usr/java/jdk1.7.0_05/到 ant.properties 将无济于事。Ant 需要环境变量中的设置。

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

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

于 2012-12-15T00:44:58.690 回答
0

尝试:

$ ant -diagnostics | grep java\\.home

如果这不是您所期望的,那么

$ JAVA_HOME=/path/to/jdk ant -diagnostics | grep java\\.home
于 2012-12-15T02:13:21.353 回答
0

我有一台装有 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/

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

于 2017-11-16T14:02:05.367 回答