TongWeb报native库重复加载
[2021-05-08 13:04:42 722] [WARNING] [main] [other] [The APR based Apache Tomcat Native library failed to load. The error reported was [Native Library /opt/TongWeb/native/linux/aarch64/libtcnative-1.so already loaded in another classloader]]
java.lang.UnsatisfiedLinkError: Native Library /opt/TongWeb/native/linux/aarch64/libtcnative-1.so already loaded in another classloader
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1911)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1861)
at java.lang.Runtime.loadLibrary0(Runtime.java:871)
at java.lang.System.loadLibrary(System.java:1124)
at org.apache.tomcat.jni.Library.<init>(Library.java:69)
at org.apache.tomcat.jni.Library.initialize(Library.java:206)
at org.apache.catalina.core.AprLifecycleListener.init(AprLifecycleListener.java:198)
at org.apache.catalina.core.AprLifecycleListener.isAprAvailable(AprLifecycleListener.java:107)
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getDefaultLifecycleListeners(TomcatServletWebServerFactory.java:168)
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.<init>(TomcatServletWebServerFactory.java:119)
at org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration$EmbeddedTomcat.tomcatServletWebServerFactory(ServletWebServerFactoryConfiguration.java:75)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:650)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:635)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1336)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1176)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:556)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:897)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:879)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:173)
at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:153)
at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:95)
at com.ps.main.MainApplication.onStartup(MainApplication.java:33)
at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:172)
at com.tongweb.catalina.core.StandardContext.startInternal(StandardContext.java:5273)
at com.tongweb.catalina.core.ThanosStandardContext.startInternal(ThanosStandardContext.java:150)
at com.tongweb.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at com.tongweb.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:734)
at com.tongweb.catalina.core.ContainerBase.addChild(ContainerBase.java:710)
at com.tongweb.catalina.core.StandardHost.addChild(StandardHost.java:734)
at com.tongweb.catalina.core.ThanosStandardHost.addChild(ThanosStandardHost.java:595)
at com.tongweb.web.thanos.startup.ThanosHostConfig.deployWar(ThanosHostConfig.java:230)
at com.tongweb.tw.thanos.ThanosWebtierWebAppBuilder.fireTomcatProcess(ThanosWebtierWebAppBuilder.java:434)
at com.tongweb.tw.thanos.ThanosWebtierWebAppBuilder.deployApplication(ThanosWebtierWebAppBuilder.java:381)
at com.tongweb.deploy.TongWebDeployer.deploy0(TongWebDeployer.java:323)
at com.tongweb.deploy.TongWebDeployer.deploy(TongWebDeployer.java:283)
at com.tongweb.tw.thanos.TongwebLoader.deployOneThread(TongwebLoader.java:507)
at com.tongweb.tw.thanos.TongwebLoader.initDeploy(TongwebLoader.java:456)
at com.tongweb.tw.thanos.TongwebLoader.event(TongwebLoader.java:207)
at com.tongweb.catalina.startup.ThanosCatalina.start(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.tongweb.catalina.startup.Bootstrap.start(Bootstrap.java:376)
at com.tongweb.catalina.startup.Bootstrap.main(Bootstrap.java:513)
原因是TongWeb带apr本地库,而应用中带有tomcat*.jar。导致加载应用时,应用的tomcat相关jar也加载apr本地库。解决办法:
方式一:去掉应用中的相关tomcat jar。
方式二:若不用apr通道,可以将TongWeb native目录删除。