If a shared library is called by both the Sun N1 Service Provisioning System and another application, an error similar to the following displays.
java.lang.UnsatisfiedLinkError: Unable to load library "/opt/SUNWn1sps/N1_Service_Provisioning_System_5.2/cli/../ common/lib/solaris/libnative.so": "Native Library /opt/SUNWn1sps/N1_Service_Provisioning_System_5.2/ common/lib/solaris/libnative.so already loaded in another classloader". (025004) at com.raplix.util.platform.common.PackageInfo.throwLibraryNotFound(PackageInfo.java:66) at com.raplix.util.platform.common.PlatformUtil.loadLibrary(PlatformUtil.java:389) at com.raplix.util.platform.common.LibraryLoader$Loader.create(LibraryLoader.java:27) at com.raplix.util.DelayedCreator.getValue(DelayedCreator.java:56) at com.raplix.util.platform.common.LibraryLoader.load(LibraryLoader.java:58) at com.raplix.util.platform.common.NativeLoader.load(NativeLoader.java:43) |
This error occurs when an application and the Sun N1 Service Provisioning System CLI call the same shared object.
Workaround: Use a single CommandManager instance to call shared objects.
The following example illustrates how to call a single CommandManager instance.
/** Not thread safe */ public class CMBuilderFactory { public static CommandManagerBuilder builder; public static CommandManager mgr; private CMBuilderFactory() { } private static CommandManagerBuilder getBuilder() { if(builder == null) { builder = new CommandManagerBuilder(); } return builder; } public static CommandManager getCommandManager() { if(mgr == null) { CommandManagerBuilder bld = getBuilder(); bld.setCLIInstallationDirectory(..); ... // additional setup parameters mgr = bld.build(); } return mgr; } } |