복붙노트

[SPRING] Apache 7.0.54 및 Java 8로 배포하는 동안 Spring 컨텍스트 초기화가 java.lang.IllegalArgumentException으로 실패했습니다.

SPRING

Apache 7.0.54 및 Java 8로 배포하는 동안 Spring 컨텍스트 초기화가 java.lang.IllegalArgumentException으로 실패했습니다.

환경 : Appliciation 서버 : Apache 7.0.54 Java : "1.8.0_05" OS : Mac OS X 10.9.3

라이브러리 : Spring 3.2 REST 애플리케이션

다음은 배포 도중받은 오류입니다.

localhost.2014.06.09.log

Jun 09, 2014 3:37:47 PM org.apache.catalina.core.ApplicationContext log
INFO: No Spring WebApplicationInitializer types detected on classpath
Jun 09, 2014 3:37:47 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Jun 09, 2014 3:37:47 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener

java.lang.IllegalArgumentException
    at org.springframework.asm.ClassReader.<init>(Unknown Source)
    at org.springframework.asm.ClassReader.<init>(Unknown Source)
    at org.springframework.asm.ClassReader.<init>(Unknown Source)
    at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:52)
    at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)
    at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:101)
    at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:76)
    at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:298)
    at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:300)
    at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:300)
    at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:230)
    at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:153)
    at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:130)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:285)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:223)
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:630)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:461)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:383)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1880)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

해결법

  1. ==============================

    1.Java 1.8 바이트 코드 형식을 지원하려면 스프링 4 릴리스로 업그레이드해야합니다.

    Java 1.8 바이트 코드 형식을 지원하려면 스프링 4 릴리스로 업그레이드해야합니다.

  2. ==============================

    2.스프링 4로 갈 수 없다면 3.2.16으로 업그레이드하면 문제가 해결됩니다.

    스프링 4로 갈 수 없다면 3.2.16으로 업그레이드하면 문제가 해결됩니다.

    Tom Saleeba에게 감사드립니다.

  3. ==============================

    3.Spring 3.2.16으로 업그레이드하면 문제가 해결되었습니다. 스프링의 이전 버전처럼 보이는 자바 1.8.xxx을 좋아하지 않아

    Spring 3.2.16으로 업그레이드하면 문제가 해결되었습니다. 스프링의 이전 버전처럼 보이는 자바 1.8.xxx을 좋아하지 않아

  4. ==============================

    4.제 경우에는 제 응용 프로그램이 java8과 부두로 실행되고, 스프링 3.1.4를 사용하며 업그레이드 할 수 없습니다.

    제 경우에는 제 응용 프로그램이 java8과 부두로 실행되고, 스프링 3.1.4를 사용하며 업그레이드 할 수 없습니다.

    문제는 bean 정의 내에서 람다 함수를 사용한 후에 나타났습니다. 그것을 제거하면 내 문제가 해결되었습니다.

  5. from https://stackoverflow.com/questions/24128045/spring-context-initialization-failed-with-java-lang-illegalargumentexception-whi by cc-by-sa and MIT license