我有部署到Tomcat的java Web应用程序。应用程序通过JNI调用低级C
库。我第一次部署应用程序时一切正常,但是一旦我尝试重新部署 - 应用程序崩溃并出现以下错误:java.lang.UnsatisfiedLinkError: Native Library /opt/apache-tomcat/apache-tomcat-7.0.57/shared/lib/libGenderizer.so already loaded in another classloader
我已创建并将我的.so对象放在/opt/apache-tomcat/apache-tomcat-7.0.57/shared/lib下。
在catalina.sh(启动tomcat的文件)中,我添加了以下行,为tomcat设置库路径。 JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/opt/apache-tomcat/current/shared/lib"
我正在使用maven mvn tomcat7:redeploy
你能帮我解决一下当前的问题吗?我正在做System.gc(),但不幸的是它没有帮助。
public class GenderService {
private static Logger logger = Logger.getLogger(GenderService.class);
static {
try {
System.gc();
System.loadLibrary("Genderizer");
}
catch(UnsatisfiedLinkError e){
logger.error("Native code library failed to load.\n", e);
}
}
private native String genderize(String name);
public Gender identifyGender(Customer customer){
Gender gender = determineGender(customer);
return gender;
}
}