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产品的核心(不包括编译器工具)。
—原文如下—
查找命令javac
与JAVA_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不算旧)。