2016-08-07 19 views
12

Java eklenen -Dnet.spy.log.LoggerImpl = net.spy.memcached.compat.log.SLF4JLogger için spymemcached seti seçmesi slf4j'yi logger olarak kullanın. Ama tomcat6 günlüklerinde şu UYARI alıyorum ve ben hata o sınıf SLF4JLogger bulunamadığını mümkün olabilmektedir nasılJava.Lang.ClassNotFoundException: net.spy.memcached.compat.log.SLF4JLogger

net.spy.memcached.compat.log.SLF4JLogger not found while initializing net.spy.compat.log.LoggerFactory java.lang.ClassNotFoundException: net.spy.memcached.compat.log.SLF4JLogger 

üzerinde şaşkın. LoggerFactory'nin başlatılması, net.spy paketinin mevcut olduğunu ve daha genel olarak casus memcache kavanozunun mevcut olduğunu ima eder. Öyleyse diğer sınıfı bulmak nasıl başarısız olabilirdi.

log4j: setFile ended log4j: Adding appender named [SecurityAuditAppender] to category [SecurityAuditLogger]. Warning: net.spy.memcached.compat.log.SLF4JLogger not found while initializing net.spy.compat.log.LoggerFactory java.lang.ClassNotFoundException: net.spy.memcached.compat.log.SLF4JLogger 
     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) 
     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) 
     at java.lang.Class.forName0(Native Method) 
     at java.lang.Class.forName(Class.java:191) 
     at net.spy.memcached.compat.log.LoggerFactory.getConstructor(LoggerFactory.java:131) 
     at net.spy.memcached.compat.log.LoggerFactory.getNewInstance(LoggerFactory.java:115) 
     at net.spy.memcached.compat.log.LoggerFactory.internalGetLogger(LoggerFactory.java:98) 
     at net.spy.memcached.compat.log.LoggerFactory.getLogger(LoggerFactory.java:87) 
     at net.spy.memcached.compat.log.LoggerFactory.getLogger(LoggerFactory.java:73) 
     at net.spy.memcached.compat.SpyThread.getLogger(SpyThread.java:60) 
     at net.spy.memcached.MemcachedConnection.createConnections(MemcachedConnection.java:152) 
     at net.spy.memcached.MemcachedConnection.<init>(MemcachedConnection.java:128) 
     at net.spy.memcached.DefaultConnectionFactory.createConnection(DefaultConnectionFactory.java:176) 
     at net.spy.memcached.MemcachedClient.<init>(MemcachedClient.java:193) 
     at net.spy.memcached.spring.MemcachedClientFactoryBean.getObject(MemcachedClientFactoryBean.java:72) 
     at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142) 
     at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:102) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1442) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:248) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
     at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322) 
     at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1360) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1118) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) 
     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) 
     at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385) 
     at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284) 
     at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) 
     at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4210) 
     at org.apache.catalina.core.StandardContext.start(StandardContext.java:4709) 
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799) 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779) 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:583) 
     at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675) 
     at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:601) 
     at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502) 
     at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317) 
     at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) 
     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065) 
     at org.apache.catalina.core.StandardHost.start(StandardHost.java:822) 
     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
     at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) 
     at org.apache.catalina.core.StandardService.start(StandardService.java:525) 
     at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) 
     at org.apache.catalina.startup.Catalina.start(Catalina.java:595) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
+0

Sorunuz nedir? – Phoenix

+0

@Phoenix, yanlışlıkla erken teslim edildi, düzenledi. – user782220

cevap

4

WebAppClassLoader bir ClassNotFoundException atıyor, sonra o sınıf web uygulaması değil. spymemcached istemci jarünün istemci kavanozu (2.12.1) yazarak web uygulamanızın WEB-INF/lib dizinine getirin. Sınıflar arası çakışmalardan kaçınmak için bu dizinden diğer spymemcached kavanozlarını kaldırın. o LoggerFactory ancak SLF4JLogger bulabildiğim neden net.spy:spymemcached eski bir sürümünü kullanıyorsanız eğer öyleyse

net.spy.memcached.compat.log.SLF4JLogger, sürüm 2.9.0 kadar tanıtılan değildi, o açıklıyor.

+0

Bu yüzden, 2.12.1 sürümüne ek olarak, 2.8.12 sürümünün de pakete dahil edildiğini keşfettim. Tüm alt projeler için pom.xml dosyasını 2.12.1 sürümünü kullanması için güncelledim ve "jar tf" kullanılarak yeni kavanozun yalnızca 2.12.1 sürümü içerdiğini doğruladım. Ancak, hala bu problemi görüyorum. Fikirler? – user782220

+0

Yayılan jar içindeki "net.spy.memcached.compat.log.SLF4JLogger" sınıf dosyasının varlığını doğruladınız mı ve spymemcached jar dosyasının * war * dosyanız içinde "WEB-INF/lib" konumunda olduğunu ve/veya patlatılmış savaş dosyanız mı? – heenenee

+0

Triple, bunun doğru olduğunu kontrol etti. İlkbahar başlangıcında ya da bir şeyin başlangıcında sınıf yolunun nasıl tanımlandığı hakkında ince bir şey olduğunu düşünmeye başladım. Ama gerçekten hiçbir fikrim yok. – user782220

1

Sen 2.12.1 yanında başka halini görmek eğer Dependency Plugin

mvn dependency:tree -Dverbose -Dincludes=spymemcached 

ile bağımlılık ağacını kontrol üst referans diye kontrol ve maven bağımlılık unsuru gibi içine hariç etiketi ekleyebilirsiniz:

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-beans</artifactId> 
    <version>3.0.3.RELEASE</version> 
    <exclusions> 
     <exclusion> 
      <groupId>net.spy</groupId> 
      <artifactId>spymemcached</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency 
İlgili konular