Wednesday, 10 April 2013

Replacing JDK of JDeveloper 11.1.1.7 on 64 bit Oracle Linux 6

As mentioned yesterday, I installed Oracle SOA/BPM Suite 11g PS6 yesterday. It was on Oracle Linux 6 Update 3 (still have to update to Update 4).

Today I installed the accompanying JDeveloper 11.1.1.7 on the same machine. Everything went fine, except that apparently the installer failed to bring up a graphical UI.

Jdeveloper can then be started with


$JDEV_HOME/jdeveloper/jdev/bin/jdev
Where in my case in installed jdeveloper in:
$JDEV_HOME=/u01/app/oracle/jdeveloper/11.1.1.7

Doing so, to my surprice, I ran into the following exception:
[oracle@darlin-vce-db bin]$ ./jdev

Oracle JDeveloper 11g Release 1 (11.1.1.7.0)
Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. 

java.lang.UnsatisfiedLinkError: /u01/app/oracle/jdeveloper/11.1.1.7/jdk160_24/jre/lib/i386/xawt/libmawt.so: libXext.so.6: cannot open shared object file: No such file or directory
 at java.lang.ClassLoader$NativeLibrary.load(Native Method)
 at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1806)
 at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1702)
 at java.lang.Runtime.load0(Runtime.java:770)
 at java.lang.System.load(System.java:1003)
 at java.lang.ClassLoader$NativeLibrary.load(Native Method)
 at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1806)
 at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1723)
 at java.lang.Runtime.loadLibrary0(Runtime.java:823)
 at java.lang.System.loadLibrary(System.java:1028)
 at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:50)
 at java.security.AccessController.doPrivileged(Native Method)
 at sun.awt.NativeLibLoader.loadLibraries(NativeLibLoader.java:38)
 at sun.awt.DebugHelper.(DebugHelper.java:29)
 at java.awt.Component.(Component.java:567)
 at oracle.ide.IdeCore.startupImpl(IdeCore.java:1171)
 at oracle.ide.Ide.startup(Ide.java:710)
 at oracle.ideimpl.DefaultIdeStarter.startIde(DefaultIdeStarter.java:35)
 at oracle.ideimpl.Main.start(Main.java:184)
 at oracle.ideimpl.Main.main(Main.java:146)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at oracle.ide.boot.PCLMain.callMain(PCLMain.java:62)
 at oracle.ide.boot.PCLMain.main(PCLMain.java:54)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at oracle.classloader.util.MainClass.invoke(MainClass.java:128)
 at oracle.ide.boot.IdeLauncher.bootClassLoadersAndMain(IdeLauncher.java:189)
 at oracle.ide.boot.IdeLauncher.launchImpl(IdeLauncher.java:89)
 at oracle.ide.boot.IdeLauncher.launch(IdeLauncher.java:65)
 at oracle.ide.boot.IdeLauncher.main(IdeLauncher.java:54)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at oracle.ide.boot.Launcher.invokeMain(Launcher.java:714)
 at oracle.ide.boot.Launcher.launchImpl(Launcher.java:116)
 at oracle.ide.boot.Launcher.launch(Launcher.java:69)
 at oracle.ide.boot.Launcher.main(Launcher.java:58)
 

Nice!
Jdeveloper comes with it's own JVM. It's installed in $JDEV/jdk160_24. And is (as guessed) the following version:
[oracle@darlin-vce-db 11.1.1.7]$ cd jdk160_24/bin/
[oracle@darlin-vce-db bin]$ ./java -version
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b50)
Java HotSpot(TM) Server VM (build 19.1-b02, mixed mode)

Apparenlty it's 32 bit. On this machine I earlier installed the 64 Oracle/Sun Hotspot JDK in
[oracle@darlin-vce-db bin]$ set |grep JAVA_HOME
JAVA_HOME=/usr/java/jdk1.6.0_43
Checking it's version will get:
[oracle@darlin-vce-db bin]$ java -version
java version "1.6.0_43"
Java(TM) SE Runtime Environment (build 1.6.0_43-b01)
Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01, mixed mode)
To solve the exception above, I changed the jdev.conf in $JDEV_HOME/jdeveloper/jdev/bin to use my own 64-bit JDK.
#
# Directive SetJavaHome is not required by default, except for the base
# install, since the launcher will determine the JAVA_HOME.  On Windows
# it looks in ..\..\jdk, on UNIX it first looks in ../../jdk. If no JDK
# is found there, it looks in the PATH.
#
#SetJavaHome /u01/app/oracle/jdeveloper/11.1.1.7/jdk160_24
SetJavaHome  /usr/java/jdk1.6.0_43/
So find the SetJavaHome directive at the top and replace it with the path to your own. Apparently you should also be able to use JRockit with JDeveloper. Would be a nice try. Although I have to try if, for instance, the compiler works, but with the above change, JDeveloper started up fine.

No comments :