Skip to main content

Android studio in ubuntu - problem: 'tools.jar' seems to be not in Android Studio classpath. Please ensure JAVA_HOME points to JDK rather than JRE.

I love coding, especially Java. Because Android apps is written in Java, I would love to make one as well. Unfortunately, when I tried to install Android Studio on my Ubuntu yesterday, I got this error message:
'tools.jar' seems to be not in Android Studio classpath.
Please ensure JAVA_HOME points to JDK rather than JRE.
When I google on this error, there are so many websites and forums discuss about this error as well as the solutions. However, in linux (or ubuntu in my case), sometime we have different environment so that the solution will not always work (sometimes we have to do another thing before or after that solution). And this also happen in this case.

Here are what I did then:
1. Know what exactly the problem is: the problem is that the JAVA_HOME in my system did not point to JDK. Instead, it points to a JRE. JRE can only be used to run java applications, not to build them.
2. Check the java path used by the system. In terminal, I typed the following:
$ java -version
In my system, the output was
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)

Hmm... still don't know exactly what was the problem. So I continue with this one in terminal:

$ update-alternatives --config java
In my ubuntu, the output will be

Selection    Path                                      Priority   Status
  0            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      auto mode
  1            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode
*  2            /usr/lib/jvm/java-6-sun/jre/bin/java       63        manual mode
  3            /usr/lib/jvm/java-7-openjdk/jre/bin/java   1051      manual mode
Press enter to keep the current choice[*], or type selection number: 
3. Voila, according to some people out there, I have to use java-7-openjdk. So I have to change the selection into 3. OK... now type 3 and enter. But, wait... here's what I got.
update-alternatives: using /usr/lib/jvm/java-6-sun/jre/bin/java to provide /usr/bin/java (java) in manual mode.
update-alternatives: error: unable to make /etc/alternatives/java.dpkg-tmp a symlink to /usr/lib/jvm/java-6-sun/jre/bin/java: Permission denied

4. Aaaa... permission denied. So, I just have to put 'sudo' before the command:
$ sudo update-alternatives --config java
5. That's it... now I can choose number 3, and when I do this command:
$ java -version
The output has now changed
java version "1.7.0_21"
OpenJDK Runtime Environment (IcedTea 2.3.9) (7u21-2.3.9-0ubuntu0.11.10.1)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
6. In my android studio folder, I go to /bin folder and now I can call the in terminal.
$ ./
7. Voila... after several steps, my first android project has now been created

Hope this post will help you as well. :D


bobbyhugges said…
did the trick for me, thanks !
Burak K. said…
thank you bro. Have a nice day!
Tar said…
I have a horrible question!
Where you copy these things?
@Tar: hahaha... I wrote all myself....
Tar said…
I know how to add them now! :)
Anonymous said…
Thank you!
clement said…
This was the best explanation I've found on the matter, because you've detailed your thought process, which is not only useful this time, but the next ones too. Thanks!
Anonymous said…
Hi Arwan,

Kita startup lokal di Bandung, perlu Java developer. Interested? follow twit aja @neosferatu atau email jakdev1 di yahoo dot com.

See you there!
nol delapan dua satu satu tiga satu satu empat satu sembilan satu
Anonymous said…
Thanks man you did it.
Anonymous said…
Por fin una opción valida a mi problema! gracias.
Devtapra said…
Akhirnya, seharian gak bisa2, dengan cara ini berhasil. Terimakasih gan . :D

Popular posts from this blog

If and For in Wolfram Mathematica (with examples)

IF Condition in Wolfram Mathematica The syntax is as follows xxxxxxxxxx If [ condition , what to do if true , what to do if false ] Some examples Example 1. Simple command x x = - 3 ; If [ x < 0 , - x , x ] 3 Example 2. If condition in a function abs [ x_ ] := If [ x < 0 , - x , x ] abs /@ { - 3 , 2 , 0 , - 2 } { 3 , 2 , 0 , 2 }   For in Wolfram Mathematica The syntax is as follows For [ start , test , inc , what to do ] Some examples Example 1. Simple Loop xxxxxxxxxx For [ i = 0 , i < 4 , i ++, Print [ i ]] 0 1 2 3 Example 2. Another simple loop For [ i = 10 , i > 0 , i --, Print [ i ]] 10 9 8 7 6 5 4 3 2 1 Example 3. Print list a = { 10 , 3 , 9 , 2 } For [ i = 1 , i < 5 , i ++, Print [ a [[ i ]]]] 10 3 9 2  

Find JIRA issues mentioned in Confluence Page

I have been walking through a lot of pages in internet but have not found any answer except one. However, the answer is not complete, so I will share my experience here. This feature is very useful, especially to summarize the issues found during certain tests, where the tests are reported in a confluence page. I found that there are so many questions about this, but Atlassian seems does not want to bother with this request. I found one way to do this by the following tricks Take one JIRA issue that related to the target confluence page (in this case, say it is GET-895) Find the global ID of a JIRA issue: It will show the JSON like this: [{"id":28293,"self":"","globalId":"appId=662e1ccf-94da-3121-96ae-053d90587b29&pageId=105485659","application":{

Mininet/Containernet Problem: Exception: Error creating interface pair (s2-eth5,s3-eth1): RTNETLINK answers: File exists

If you did not shut down the previous running mininet/containernet network (e.g. if you lose your connection to remote server), you will got the following error when you try to rerun your mininet network Traceback (most recent call last): File "./", line 31, in <module> net.addLink(d2, s1) File "build/bdist.linux-x86_64/egg/mininet/", line 403, in addLink File "build/bdist.linux-x86_64/egg/mininet/", line 430, in __init__ File "build/bdist.linux-x86_64/egg/mininet/", line 474, in makeIntfPair File "build/bdist.linux-x86_64/egg/mininet/", line 202, in makeIntfPair Exception: Error creating interface pair (d2-eth0,s1-eth2): RTNETLINK answers: File exists In order to solve the problem, you need to clean up the previous running topology by using the following command sudo mn -c It will clean up all your cache. It will be something like this $ sudo mn -c *** Re