简体   繁体   English

Java Tomcat Web应用程序JNI

[英]Java Tomcat web application JNI

I have java web application which is deployed to Tomcat. 我有部署到Tomcat的Java Web应用程序。 Application calls low level C library via JNI. 应用程序通过JNI调用底层C库。 Everything works fine when I deploy my application at first time, but as soon as I trying to redeploy - application crashes with following error: java.lang.UnsatisfiedLinkError: Native Library /opt/apache-tomcat/apache-tomcat-7.0.57/shared/lib/libGenderizer.so already loaded in another classloader 第一次部署应用程序时,一切正常,但是尝试重新部署时,应用程序崩溃,并出现以下错误: java.lang.UnsatisfiedLinkError: Native Library /opt/apache-tomcat/apache-tomcat-7.0.57/shared/lib/libGenderizer.so already loaded in another classloader

  1. I've created and put my .so object under /opt/apache-tomcat/apache-tomcat-7.0.57/shared/lib. 我已经创建了.so对象并将其放在/opt/apache-tomcat/apache-tomcat-7.0.57/shared/lib下。

  2. In catalina.sh (file which starts tomcat) I've added following line which sets library path for tomcat. 在catalina.sh(启动tomcat的文件)中,我添加了以下行,该行设置了tomcat的库路径。 JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/opt/apache-tomcat/current/shared/lib"

  3. I am redeploying my application using maven mvn tomcat7:redeploy 我正在使用maven mvn tomcat7:redeploy部署我的应用程序

Could you please help me to resolve current issue? 您能帮我解决当前问题吗? I am doing System.gc() but unfortunately it doesn't help. 我正在做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;
            }
    }

Already asked on SO . 已经问过SO了 See Apache Tomcat Wiki for a helpful answer. 请参阅Apache Tomcat Wiki,以获得有用的答案。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM