使用本机代码的webapp在Glassfish 2.x中运行良好。
在3.1.1中,它失败了:
[#|2012-04-18T14:43:08.330+0000|SEVERE|glassfish3.1.2|com.sun.jersey.spi.container.ContainerResponse|_ThreadID=21;_ThreadName=Thread-2;|The exception contained within MappableContainerException could not be mapped to a response, re-throwing to the HTTP container
java.lang.UnsatisfiedLinkError: com.basistech.rnt.jni.initializeEnvironmentSpecificRootDirectory(Ljava/lang/String;)Z
at com.basistech.rnt.jni.initializeEnvironmentSpecificRootDirectory(Native Method)
请注意,这是抱怨特定符号的链接错误的版本,而不是整个库。
完全相同的JNI lib可以在同一台机器上从Glassfish的外示例Java程序运行。
阅读JDK源代码,只有当dlsym
(我们在Linux上)无法返回符号时,这似乎才有可能。 (这都是Java 1.6.x.)我很难理解Glassfish可能会做什么导致dlsym
无法在共享库中看到此符号。
有任何想法吗?