The first step is to get rid of the default OpenJDK installation. I sympathize with the goals of the OpenJDK community and of free software in general, but at the same time, I am content to run Oracle's JDK for development purposes. Instructions for doing this depend on your distribution, and a quick search will likely show something like this:
sudo apt-get purge openjdk*
sudo apt-get purge icedtea-* openjdk-*
It probably doesn't matter if you keep the OpenJDK installed, but since we're not using it, we may as well clean it out.
In the bad old days, I would install all my Java libraries into
/usr/local
, and then I would curse myself over getting the permissions right. These days, I just put them in an apps
folder off of my home directory—that is, at /home/pvg/apps
. If you're very new to *nix, not that the tilde (~
) is used to represent your home directory, so I also refer to this directory as ~/apps
.Next step is to download the JDK from Oracle. I will assume we're using Java SE 7, release 40, just for the sake of discussion. The approach is the same for any release, and in fact, allows for parallel installation of different releases. I extract the JDK into
~/apps/jdk1.7.0_40
using standard archiving tools. Then, set up a symbolic link in ~/apps
to point to this particular release of the JDK. From the ~/apps directory, it looks like this:
ln -s jdk1.7.0_40 jdk1.7.0
Now, I can reference ~/apps/jdk1.7.0
and it goes immediately to release 40. If I want to update my Java version, I simply drop it into ~/apps
and update the symbolic link—no other changes are required.Making this JDK accessible from the command line just requires a few tweaks to the
.bashrc
file. This is a hidden file in your home directory; this means you won't see it with a standard ls
command, but you can if you do ls -a
. Since I use emacs, I can open the file with emacs .bashrc
from my home directory; vim or another editor would work similarly, except not quite as well because they are not emacs. What we'll do is add two export
commands, one to specify JAVA_HOME
and another to tweak the path. I put them at the bottom of my .bashrc
, along with a comment reminding myself what I was doing. The result looks like this:
# Use the JDK in ~/apps
export JAVA_HOME=/home/pvg/apps/jdk1.7.0
export PATH=$JAVA_HOME/bin:$PATH
You will need to open a new console or
source
the .bashrc
file to see the change. Now, if you type the command java -version
, you should see that you're running JDK 1.7.0 Release 40 (in my example). Note that you can use the which
command to determine which executable is being run, so which java should return /home/pvg/apps/jdk1.7.0/bin/java
.My installation strategy for Maven, Ant, and Eclipse is similar. This gives me fine-grained control over which version I have installed, and I can hop between versions by simply tweaking my path. For example, in my
~/apps
directory I have apache-maven-3.1.0
, and then in ~/.bashrc
I have added the following lines:
export MAVEN_HOME=/home/pvg/apps/apache-maven-3.1.0
export PATH=$MAVEN_HOME/bin:$PATH
~/apps/eclipse/eclipse.ini
) I have added a link to the JavaVM that should be used to start Eclipse. The two lines look like this:
-vm
/home/pvg/apps/jdk1.7.0/bin/java
These go before the -vmargs flag that is probably already there.
I hope this is useful information for my students and others who are experimenting with configuring GNU/Linux systems for Java development. If you have other tips or approaches, feel free to leave them in the comments.
No comments:
Post a Comment