The Java platform has rules about not allowing the same native library to be loaded by more than one ClassLoader instance simultaneously. These rules are designed to reduce the risk of violating the Java type system and to prevent static state in C code from leaking up to the Java level.
The common JNLP code in the deployment workspace unpacks nativelib jar files associated with JNLP extensions into the deployment cache, but only one copy of these shared objects is made. This is fine in the context of Java Web Start, but does not work at all for the Java Plug-In, where multiple applets running simultaneously in the same JVM may attempt to access the same JNLP extension and therefore the same nativelib jar files.
To solve this problem, a temporary copy of the shared objects in each nativelib jar file must be made for each JNLP2ClassLoader which loads them.