Ant无法findjavac,JAVA_HOME不会在Ubuntu上设置

我在Ubuntu 10.04 i386服务器(无头)上有一个叫做Hello的Android项目。 它包含Android项目文件夹应该具有的所有内容。 我首先在bash中使用这个synax在Project文件夹中生成项目:

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

然后我尝试用ant来创build.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。 出了什么问题? 我一直在这个太多的时间。

你安装了JDK吗?

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

请执行下列操作:

 sudo apt-get install openjdk-6-jdk 

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

—注意到你的输出中的一个小项目后更新—

您已将JAVA_HOME设置为Java运行时环境的正确位置,这不会让您运行Java程序, 而是不会开发它们

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

提供了embedded式Java运行时环境 ,以确保您可以testingJava产品的核心(不包括编译器工具)。

—原文如下—

查找命令javacJAVA_HOME没有多大关系, javac通常位于JAVA_HOME下的子目录中

你需要做的是修改你的PATH环境variables来包含Java可执行文件所在的目录。 通常这是这样做的

 PATH=${PATH}:${JAVA_HOME}/bin export PATH 

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

 ls ${JAVA_HOME}/bin 

并且你看到一个javac可执行文件,那么上面修改的pathvariables就可以工作,而不需要改变它。

正如Edwin Buck所述,请检查您的$ PATH是否连接到/ usr / bin /目录中的/ etc / alternatives / java。 它们正在被附加的JAVA_HOMEvariables读取。

这是我的问题:

 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 

改变JAVA_HOME和PATH是不够的。

在安装所需的Java JDK版本(Java开发工具包,不只是Java运行时环境JRE)后,使用sudo update-alternatives --config java更改您的首选版本。 如果你在Ubuntu上,你可能已经安装了1.6和1.7,并且在PPA中可以使用1.8(尽pipe我找不到1.8的PPA不算旧)。