Ant unable to find javac, JAVA_HOME won't set on Ubuntu

lollercoaster picture lollercoaster · Apr 20, 2011 · Viewed 64.8k times · Source

I have an Android Project called Hello on my Ubuntu 10.04 i386 Server (headless). It contains all things an Android project folder should have. I first build the project in bash while in the Project folder using this synax:

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

then I try to build the .apk with ant like so:

ant debug

I get this error:

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"

which is very confusing to me because just before I run ant debug I run:

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

which I know works because printenv in bash shell returns:

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

to compound this, adding this line to my /etc/environment file

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

does not fix the problem either - I get the same error. Nothing I do changes the fact Ubunut still thinks /usr/lib/jvm/java-6-openjdk/jre is the JAVA_HOME. What is going wrong? I've been at this for too many hours.

Answer

Brian Roach picture Brian Roach · Apr 20, 2011

Did you install the JDK?

When you install Ubuntu only the JRE is installed as part of the default packages. Unfortunately Ubuntu's package management names the directory as if the JRE were installed along with the JDK. The directory is named java-6-openjdk even though the JDK is not be present.

Do the following:

sudo apt-get install openjdk-6-jdk

It will install the JDK in that same directory.