Skip to main content

Multiple jvm on one linux box

For some reason, you need to use more than one version of jdk on same linux machine. First thing to do is install jdk, you can download from sun. Follow their installation instruction then you should have jdk install in /usr/java/jdk1.6.0_01. but jre still gcj
[root@mail ~]# java -version
java version "1.4.2"
gij (GNU libgcj) version 4.0.2 20051125 (Red Hat 4.0.2-8)

Copyright (C) 2005 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
[root@mail ~]#

So use alternatives command to check
[root@mail ~]# alternatives --display java
java - status is auto.
link currently points to /usr/lib/jvm/jre-1.4.2-gcj/bin/java
/usr/lib/jvm/jre-1.4.2-gcj/bin/java - priority 1420
slave rmiregistry: /usr/lib/jvm/jre-1.4.2-gcj/bin/rmiregistry
slave jre_exports: /usr/lib/jvm-exports/jre-1.4.2-gcj
slave jre: /usr/lib/jvm/jre-1.4.2-gcj
Current `best' version is /usr/lib/jvm/jre-1.4.2-gcj/bin/java.
[root@mail ~]#

add 'sun java' to alternative,config,and check again
[root@mail ~]# alternatives --install /usr/bin/java java /usr/java/jdk1.6.0_01/bin/java 2 
[root@mail ~]# alternatives --config java
There are 2 programs which provide 'java'.

Selection Command
*+ 1 /usr/lib/jvm/jre-1.4.2-gcj/bin/java
2 /usr/java/jdk1.6.0_01/bin/java

Enter to keep the current selection[+], or type selection number: 2
[root@mail ~]# java -version
java version "1.6.0_01"
Java(TM) SE Runtime Environment (build 1.6.0_01-b06)
Java HotSpot(TM) Client VM (build 1.6.0_01-b06, mixed mode, sharing)
[root@mail ~]#

Note: For my ubuntu box I get java from backport extra repos by add this two line in /etc/apt/sources.list
deb dapper-backports main restricted universe multiverse
deb-src dapper-backports main restricted universe multiverse

then use these command to install and config
pnix@pnix-a7:~$sudo apt-get install sun-java6-jdk sun-java6-plugin
pnix@pnix-a7:~$sudo update-alternatives --config java


Anonymous said…
Great post and screen shots! Saved the day, ty
Anonymous said…

Hasan Ali Özaslan

Popular posts from this blog

Converting dat to mpeg file, to burn vcd on ubuntu

Creating vcd [from dat file] on WinXP, I use "Nero Burning Rom". It can burn dat file to vcd directly. On ubuntu, AFAIK, No burning cd software to burn dat to vcd. I use k3b but it can't burn dat file. It support only mpeg-1 and mpeg-2 format. Dat file need to convert to mpeg first. Thist post will show how I install and use vcdgear to convert dat file to mpeg file. pnix@pnix-a7n:~/progdl$ wget --04:21:14-- => `vcdgear176-040415_linux.tar.gz' Resolving Connecting to||:80... connected. HTTP request sent, awaiting response... 200 OK Length: 442,937 (433K) [application/x-tar] 100%[====================================>] 442,937 105.23K/s ETA 00:00 04:21:20 (87.02 KB/s) - `vcdgear176-040415_linux.tar.gz' saved [442937/442937] pnix@pnix-a7n:~/progdl$ tar xzf vcdgear

Too many open files

Last week tomcat log file report many error about "Too many open files" when it has high traffic. Some in catalina_log say 2007-04-07 16:13:40 HttpProcessor[80][272] Starting background thread 2007-04-07 16:13:40 HttpConnector[80] accept: Too many open files and here is from localhost_log 2007-04-07 16:13:40 StandardWrapperValve[myservlet]: Servlet.service() for servlet myservlet threw exception /home/log/mylog_070407.log (Too many open files) This is because too many file descriptors're opened by tomcat. File descriptor can be limited in both system level and shell level. To check maximum number of fd in system type 'cat /proc/sys/fs/file-max'. In my case it is 65536(someone said it should set to 200000). Tomcat error when try to open socket number 272 so I think 65536 is ok for me for now. Anyway if u want to set it add 'fs.file-max = 200000' to /etc/sysctl.conf pnix@pnix-a7:~$ cat /proc/sys/fs/fil

using Class.getResource() load resource file in Eclipse

There are many ways to load resource file in java app. What sun recommended is using Class.getResource(" resource_name ") or Class.getResourceAsStream(" resource_name ") then you will get URL and InputStream respectively. If resource_name is specified without "/", it will be prepend with Class package. So resource file must be in same place[folder structure] as the Class. What I love to do is call getResource() with "/" and put resource file at the root of package. This way i can have separate resource folder. below is in Eclipse, 1. From Package explorer right click src folder->click import 2. In import dialog, Choose General->File System ->next 3. from directory:->Browse to your resource folder. 4. to folder:-> I add "resource" as a folder name under src folder. then click "Finish". In the code, load resource with this.getClass().getResource("/resource/buttons1.png") or this.getClass().getResourceAs