[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Where is the appropriate location for setting a default JDK?



Hi Barry,

> On Thu, 28 Oct 2004 13:29:45 -0400, Barry Hawkins <barry@alltc.com> wrote:

<snip> Solution 1:

> # IBM Java 1.4.2 SDK settings
> export JAVA_HOME=/opt/IBMJava2-ppc-142
> export PATH="${PATH}":"${JAVA_HOME}"/bin
> export PATH="${PATH}":"${JAVA_HOME}"/jre/bin
>
> which works fine for things I launch from a shell.  However, for things
> like a KDE Application Button to launch Eclipse, this does nothing.

> ~    I am wondering that the most appropriate location would be for
> setting the JAVA_HOME and associated PATH additions to indicate a
> system-wide default JDK for my Debian installations.  I am currently
> thinking of /etc/bash.bashrc, but because that may be overwritten when
> bash upgrades, I am unsure.  Can some of you tell me best practices
> and/or recommendations for this?

In the past, I have used alternatives for this. Basically, I set
"/usr/bin/java" and all of the normal command line options to go to the
correct JVM, rather than the default. If I want to go back to the other, I
can change the alternatives choice and it fixes the /usr/bin/java links
for me.

Here is one example. In this case, I am using a full JDK, and it is in
/usr/local/lib/java/j2sdk1.4.2_05.

Installing the Alternatives:

# update-alternatives --install /usr/bin/javac javac
/usr/local/lib/java/j2sdk1.4.2_05/bin/javac 1000 --slave
/usr/local/lib/java/j2sdk1.4.2_05/man/man1/javac.1.gz javac.1.gz
/usr/share/man/man1/javac.j2sdk14.1.gz

# update-alternatives --install /usr/bin/rmic rmic
/usr/local/lib/java/j2sdk1.4.2_05/bin/rmic 1000 --slave
/usr/local/lib/java/j2sdk1.4.2_05/man/man1/rmic.1.gz rmic.1.gz
/usr/share/man/man1/rmic.j2sdk14.1.gz

# update-alternatives --install /usr/bin/java java
/usr/local/lib/java/j2sdk1.4.2_05/bin/java 1000 --slave
/usr/local/lib/java/j2sdk1.4.2_05/man/man1/java.1.gz java.1.gz
/usr/share/man/man1/java.j2sdk14.1.gz

# update-alternatives --install /usr/bin/jarsigner jarsigner
/usr/local/lib/java/j2sdk1.4.2_05/bin/jarsigner 1000 --slave
/usr/local/lib/java/j2sdk1.4.2_05/man/man1/jarsigner.1.gz jarsigner.1.gz
/usr/share/man/man1/jarsigner.j2sdk14.1.gz

# update-alternatives --install /usr/bin/javadoc javadoc
/usr/local/lib/java/j2sdk1.4.2_05/bin/javadoc 1000 --slave
/usr/local/lib/java/j2sdk1.4.2_05/man/man1/javadoc.1.gz javadoc.1.gz
/usr/share/man/man1/javadoc.j2sdk14.1.gz

# update-alternatives --install /usr/bin/appletviewer appletviewer
/usr/local/lib/java/j2sdk1.4.2_05/bin/appletviewer 1000 --slave
/usr/local/lib/java/j2sdk1.4.2_05/man/man1/appletviewer.1.gz
appletviewer.1.gz /usr/share/man/man1/appletviewer.j2sdk14.1.gz

# update-alternatives --install /usr/bin/rmid rmid
/usr/local/lib/java/j2sdk1.4.2_05/bin/rmid 1000 --slave
/usr/local/lib/java/j2sdk1.4.2_05/man/man1/rmid.1.gz rmid.1.gz
/usr/share/man/man1/rmid.j2sdk14.1.gz

# update-alternatives --install /usr/bin/rmiregistry rmiregistry
/usr/local/lib/java/j2sdk1.4.2_05/bin/rmiregistry 1000 --slave
/usr/local/lib/java/j2sdk1.4.2_05/man/man1/rmiregistry.1.gz
rmiregistry.1.gz /usr/share/man/man1/rmiregistry.j2sdk14.1.gz

# update-alternatives --install /usr/bin/javah javah
/usr/local/lib/java/j2sdk1.4.2_05/bin/javah 1000 --slave
/usr/local/lib/java/j2sdk1.4.2_05/man/man1/javah.1.gz javah.1.gz
/usr/share/man/man1/javah.j2sdk14.1.gz

# update-alternatives --install /usr/bin/javap javap
/usr/local/lib/java/j2sdk1.4.2_05/bin/javap 1000 --slave
/usr/local/lib/java/j2sdk1.4.2_05/man/man1/javap.1.gz javap.1.gz
/usr/share/man/man1/javap.j2sdk14.1.gz

# update-alternatives --install /usr/bin/jar jar
/usr/local/lib/java/j2sdk1.4.2_05/bin/jar 1000 --slave
/usr/local/lib/java/j2sdk1.4.2_05/man/man1/jar.1.gz jar.1.gz
/usr/share/man/man1/jar.j2sdk14.1.gz

# update-alternatives --install /usr/bin/jdb jdb
/usr/local/lib/java/j2sdk1.4.2_05/bin/jdb 1000 --slave
/usr/local/lib/java/j2sdk1.4.2_05/man/man1/jdb.1.gz jdb.1.gz
/usr/share/man/man1/jdb.j2sdk14.1.gz

# update-alternatives --install /usr/bin/keytool keytool
/usr/local/lib/java/j2sdk1.4.2_05/bin/keytool 1000 --slave
/usr/local/lib/java/j2sdk1.4.2_05/man/man1/keytool.1.gz keytool.1.gz
/usr/share/man/man1/keytool.j2sdk14.1.gz

# update-alternatives --install /usr/bin/policytool policytool
/usr/local/lib/java/j2sdk1.4.2_05/bin/policytool 1000 --slave
/usr/local/lib/java/j2sdk1.4.2_05/man/man1/policytool.1.gz policytool.1.gz
/usr/share/man/man1/policytool.j2sdk14.1.gz

Switching between JDKs means I have to switch each installed alternative
over to the correct command:

# update-alternatives --config java
There are 3 programs which provide `java'.

  Selection    Command
-----------------------------------------------
 +    1        /usr/lib/j2sdk1.3/bin/java
      2        /usr/local/lib/java/jrockit-j2sdk1.4.2_04/bin/java
*     3        /usr/local/lib/java/j2sdk1.4.2_05/bin/java

Enter to keep the default[*], or type selection number: 3

Same thing with:
# update-alternatives --config javac
# update-alternatives --config rmic
# update-alternatives --config jarsigner
# update-alternatives --config javadoc
# update-alternatives --config appletviewer
# update-alternatives --config rmid
# update-alternatives --config rmiregistry
# update-alternatives --config javah
# update-alternatives --config javap
# update-alternatives --config jar
# update-alternatives --config jdb
# update-alternatives --config keytool
# update-alternatives --config policytool

I am not sure if this is the "correct" way, but it seems to have worked
just fine for me.

-nicole



Reply to: