Ant无法找到javac,JAVA_HOME也不会在Ubuntu上设置

时间:2011-04-20 21:05:59

标签: java android linux ant ubuntu

我的Ubuntu 10.04 i386服务器(无头)上有一个名为Hello的Android项目。它包含Android项目文件夹应具有的所有内容。我首先在使用此synax的Project文件夹中使用bash构建项目:

./android create project --target 5 --name HelloCompile --path ../../Projects/Hello --activity HelloActivity --package com.code.Hello

然后我尝试使用ant构建.apk:

ant debug

我收到此错误:

BUILD FAILED
/home/myusername/www/sdk/tools/ant/main_rules.xml:384: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "/usr/lib/jvm/java-6-openjdk/jre"

这对我来说非常困惑,因为就在我运行ant debug之前我跑:

export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
我知道

因为bash shell中的printenv返回:

JAVA_HOME=/usr/lib/jvm/java-6-openjdk

将此行复合,将此行添加到我的/ etc / environment文件

export JAVA_HOME=/usr/lib/jvm/java-6-openjdk

也没有解决问题 - 我得到了同样的错误。我所做的一切都没有改变Ubunut仍然认为/usr/lib/jvm/java-6-openjdk/jre是JAVA_HOME的事实。出了什么问题?我已经在这里工作了太多时间。

4 个答案:

答案 0 :(得分:77)

你安装了JDK吗?

安装Ubuntu时,只安装JRE作为默认包的一部分。不幸的是,Ubuntu的软件包管理将目录命名为JRE与JDK一起安装。即使JDK不存在,该目录也会命名为java-6-openjdk

执行以下操作:

sudo apt-get install openjdk-6-jdk

它将JDK安装在同一目录中。

答案 1 :(得分:10)

---在注意到输出中的一个小项目后更新---

您已将JAVA_HOME设置为 Java运行时环境的正确位置,这无可非议地允许您运行Java程序但不开发它们

JAVA_HOME缩短为/usr/lib/jvm/java-6-openjdk(请注意删除尾随jre)。之后,您的Ant包装器/编译器检测代码不会混淆,因为它将指向 Java开发环境的主页,而不是嵌入的,相关的 Java运行时环境

提供了嵌入式 Java运行时环境,以确保您可以仅针对核心(未包含的编译器工具)Java产品进行测试。

---原帖如下---

查找命令javacJAVA_HOME之外的javac几乎没有JAVA_HOME通常位于PATH

下的子目录中

您需要做的是修改PATH=${PATH}:${JAVA_HOME}/bin export PATH 环境变量以包含Java可执行文件所在的目录。通常情况下这样做

ls ${JAVA_HOME}/bin

但根据您的设置,可能会略有不同。如果你这样做

{{1}}

并且您看到了一个javac可执行文件,然后路径变量的上述修改将无需更改即可使用。

答案 2 :(得分:2)

正如Edwin Buck所说,检查$ PATH以获取/ usr / bin /目录中/ etc / alternatives / java的软链接。它们在您附加的JAVA_HOME变量之前被读取。

那是我的问题:

ls -al /usr/bin/j* 
lrwxrwxrwx 1 root root    22 2012-05-07 13:26 /usr/bin/java -> /etc/alternatives/java
lrwxrwxrwx 1 root root    25 2011-05-12 19:45 /usr/bin/java_vm -> /etc/alternatives/java_vm
lrwxrwxrwx 1 root root    24 2011-05-01 05:22 /usr/bin/javaws -> /etc/alternatives/javaws
lrwxrwxrwx 1 root root    26 2011-05-12 19:45 /usr/bin/jcontrol -> /etc/alternatives/jcontrol
lrwxrwxrwx 1 root root    23 2011-04-26 02:24 /usr/bin/jexec -> /etc/alternatives/jexec

答案 3 :(得分:0)

更改JAVA_HOME和PATH是不够的。

安装所需的Java JDK版本(Java DEVELOPMENT Kit,而不仅仅是Java Runtime Environment JRE)后,使用sudo update-alternatives --config java更改首选版本。如果您使用的是Ubuntu,那么您可能已经安装了1.6和1.7,并且可以在PPA中使用1.8(尽管我找不到1.8的PPA并且不老)。