Tuesday, October 5, 2010

Native version is enabled but node manager native library could not be loaded


The biggest challenge when working with 64 bit installations is to ensure that all components pick up the correct libraries. While doing a 64 bit installation of Weblogic Portal recently, my nodemanager refused to start.

While starting the node manager, following error message is thrown:
weblogic.nodemanager.common.ConfigException: Native version is enabled but node manager native library could not be loaded
        at weblogic.nodemanager.server.NMServerConfig.initProcessControl(NMServerConfig.java:239)
        at weblogic.nodemanager.server.NMServerConfig.(NMServerConfig.java:179)
        at weblogic.nodemanager.server.NMServer.init(NMServer.java:176)
        at weblogic.nodemanager.server.NMServer.(NMServer.java:141)
        at weblogic.nodemanager.server.NMServer.main(NMServer.java:337)
        at weblogic.NodeManager.main(NodeManager.java:31)
Caused by: java.lang.UnsatisfiedLinkError: /opt/oracle/product/middleware/wlserver_10.3/server/native/solaris/sparc64/libnodemanager.so: ld.so.1: java: fatal: /opt/oracle/product/middleware/wlserver_10.3/server/native/solaris/sparc64/libnodemanager.so: wrong ELF class: ELFCLASS64 (Possible cause: architecture word width mismatch)
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1803)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1728)
        at java.lang.Runtime.loadLibrary0(Runtime.java:823)
        at java.lang.System.loadLibrary(System.java:1028)
        at weblogic.nodemanager.util.UnixProcessControl.(UnixProcessControl.java:24)
        at weblogic.nodemanager.util.Platform.getProcessControl(Platform.java:114)
        at weblogic.nodemanager.server.NMServerConfig.initProcessControl(NMServerConfig.java:237)

Cause.
This error occurs because of mismatch of libraries being loaded at runtime. The OS is 64 bit; therefore the client (node manager) should be started as a 64 bit client. For some reason, the startNodeManager.sh script did not had the “-d64” flag in the java options, hence this error.
               
Fix.
Edit the startNodeManager.sh script and add the “-d64” option to JAVA_VM variable.
JAVA_VM="-d64 ${JAVA_VM}
Restart the Node manager and it should start normally.

3 comments:

  1. I added it to after the unset JVM line, but doesn't work for me:/

    ReplyDelete
  2. I didn't find the JAVA_VM variable in startNodeManager.sh :(

    ReplyDelete