2016-08-07 9 views
12

Java opts에 추가했습니다. -Dnet.spy.log.LoggerImpl = net.spy.memcached.compat.log.SLF4JLogger spymemcached를 다음과 같이 설정합니다. 로거로 slf4j를 사용하십시오. 하지만 tomcat6 로그에 다음과 같은 경고를 받고, 그리고 난 오류는 클래스 SLF4JLogger가 발견되지 않는 가능성이 할 수있는 방법을java.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 

이상 의아해입니다. LoggerFactory를 초기화하면 net.spy 패키지를 사용할 수 있고 더 일반적으로 스파이 memcache jar를 사용할 수 있음을 의미합니다. 그러면 어떻게 다른 반을 찾지 못하게 될 수 있겠습니까?

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

무엇이 당신의 질문입니까? – Phoenix

+0

@Phoenix 미안하지만 실수로 조기에 제출하여 편집했습니다. – user782220

답변

4

WebAppClassLoaderClassNotFoundException을 던지는 경우는, 그 클래스는 웹 응용 프로그램이 아닙니다. spymemcached 고객 용 병 (이 글을 쓰는 시점에서는 2.12.1)의 latest version을 가져와 웹 응용 프로그램의 WEB-INF/lib 디렉토리에 저장하십시오. 클래스로드 충돌을 피하려면 해당 디렉토리에서 다른 spymemcached 병을 제거하십시오. 이 LoggerFactory하지만 SLF4JLogger을 찾을 수있는 이유를 net.spy:spymemcached의 이전 버전을 사용하는 경우, 그래서

net.spy.memcached.compat.log.SLF4JLogger이 버전 2.9.0까지 소개되지 않은, 그 설명 할 것입니다.

+0

그래서 2.12.1 버전 외에 2.8.12 버전이 포함되어 있다는 것을 발견했습니다. 모든 하위 프로젝트의 pom.xml을 버전 2.12.1을 사용하도록 업데이트하고 'jar tf'를 사용하여 새로운 jar에 spymemcached 버전 2.12.1 만 포함되어 있는지 확인했습니다. 그러나 나는 아직도이 문제를보고있다. 아이디어? – user782220

+0

spymemcached jar 파일 내에'net.spy.memcached.compat.log.SLF4JLogger' 클래스 파일의 존재를 확인했는지, spymemcached jar 파일이 * war * 파일의'WEB-INF/lib'에 있는지 그리고/또는 당신의 폭발 된 전쟁 파일? – heenenee

+0

트리플이 사실인지 확인했습니다. 클래스 초기화가 Spring 초기화 나 어떤 것에서 어떻게 정의되는지에 대해 미묘한 점이 있다고 생각하기 시작했다. 그러나 나는 정말로 모른다. – user782220

1

당신은 당신이 2.12.1 옆에 다른 버전을 볼 경우, Dependency Plugin

mvn dependency:tree -Dverbose -Dincludes=spymemcached 

으로 종속성 트리를 확인은 최고 기준의 확인이 받는다는 종속 요소처럼에 제외 태그를 추가 할 수 있습니다

<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