복붙노트

[SPRING] Spring : 중첩 예외는 java.lang.NoClassDefFoundError : org / aopalliance / aop / Advice입니다.

SPRING

Spring : 중첩 예외는 java.lang.NoClassDefFoundError : org / aopalliance / aop / Advice입니다.

스택 추적 :

Oct 24, 2014 8:12:04 AM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@50df2e: startup date [Fri Oct 24 08:12:04 IST 2014]; root of context hierarchy
Oct 24, 2014 8:12:05 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [knights-aop.xml]
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [knights-aop.xml]; nested exception is java.lang.NoClassDefFoundError: org/aopalliance/aop/Advice
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:412)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:243)
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127)
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    at com.java.spring.SpringDemo.main(SpringDemo.java:12)
Caused by: java.lang.NoClassDefFoundError: org/aopalliance/aop/Advice
    at org.springframework.aop.config.ConfigBeanDefinitionParser.getAdviceClass(ConfigBeanDefinitionParser.java:410)
    at org.springframework.aop.config.ConfigBeanDefinitionParser.createAdviceDefinition(ConfigBeanDefinitionParser.java:366)
    at org.springframework.aop.config.ConfigBeanDefinitionParser.parseAdvice(ConfigBeanDefinitionParser.java:332)
    at org.springframework.aop.config.ConfigBeanDefinitionParser.parseAspect(ConfigBeanDefinitionParser.java:227)
    at org.springframework.aop.config.ConfigBeanDefinitionParser.parse(ConfigBeanDefinitionParser.java:115)
    at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:73)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1438)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1428)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:195)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:139)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:108)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)
    ... 14 more

config xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:aop="http://www.springframework.org/schema/aop"
 xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

  <bean id="knight" class="com.java.spring.BraveKnight">
    <constructor-arg ref="quest" />
  </bean>

  <bean id="quest" class="com.java.spring.ResqueDamselQuest" />

  <bean id="minstrel" 
     class="com.java.spring.Minstrel" /> <!--<co id="co_minstrel_bean"/>-->

  <aop:config>
    <aop:aspect ref="minstrel">

      <aop:pointcut id="embark" 
          expression="execution(* *.embarkOnQuest(..))" /> <!--<co id="co_define_pointcut"/>-->

      <aop:before pointcut-ref="embark"
                  method="singBeforeQuest"/>    <!--<co id="co_minstrel_before_advice"/>-->

      <aop:after pointcut-ref="embark"
                 method="singAfterQuest"/>     <!--<co id="co_minstrel_after_advice"/>-->

    </aop:aspect>
  </aop:config>
</beans>

내 주요 수업 :

public class SpringDemo {
    public static void main(String[] args) {
        final ApplicationContext applicationContext = new ClassPathXmlApplicationContext("knights-aop.xml");
        final Knight braveKnight = (Knight) applicationContext.getBean("knight");
        braveKnight.embarkOnQuest();
    }
}

나는 또한 aopalliance.jar & aopalliance-alpha1.jar를 개별적으로 그리고 함께 추가하려고 시도했지만 오류는 사라지지 않을 것이다.

그래서 비슷한 질문이 여기에 있습니다 : 스프링 중첩 예외는 java.lang.NoClassDefFoundError : org / aopalliance / aop / Advice입니다.

########### EDIT ########### 업데이트 : 프로젝트의 다른 클래스 ## Minstrel.java

package com.java.spring;

    public class Minstrel {
        public void singBeforeQuest(){
            System.out.println("Fa la la Theknight is so brave!");
        }
        public void singAfterQuest(){
            System.out.println(
                    "Tee hee he The brave knight did embark on a quest!");
        }
    }

BraveKnight.java

package com.java.spring;

public class BraveKnight implements Knight {
    private Quest quest;

    BraveKnight(Quest quest) {
        this.quest = quest;
    }

    @Override
    public void embarkOnQuest() {
        quest.embark();
    }
}

RescueDamselQuest.java

package com.java.spring;

    public class RescueDamselQuest implements Quest {

        @Override
        public void embark() {
            System.out.println("Damsel rescue quest is on.");
        }
    }

나는 봄 3.2를 사용하고있다. ########## EDIT2 ########### Maven을 사용하지 않습니다. Spring AOP가 없으면 Maven 관련 솔루션을 제공 할 수 없다면 제공하지 마십시오. 프로젝트 스냅 : SPRING LIBRARY 내부에는 Spring과 함께 다운로드 된 모든 항아리가 있습니다. 일부 봄 특유 항아리가 항아리 항아리와 충돌 할 가능성이 있습니까? Maven이없는 비슷한 예제가 있다면 누구나 제공하십시오. 고마워 ~ Mohit

해결법

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

    1.IDE의 빌드 클래스 경로 (Eclipse?)에만 애지지 항아리를 추가하는 것 같습니다. IDE가 오류를 표시하지 않고 응용 프로그램을 빌드 할 수 있다고 설명합니다. 그러나 실제로는 실행 클래스 경로에 추가해야합니다.

    IDE의 빌드 클래스 경로 (Eclipse?)에만 애지지 항아리를 추가하는 것 같습니다. IDE가 오류를 표시하지 않고 응용 프로그램을 빌드 할 수 있다고 설명합니다. 그러나 실제로는 실행 클래스 경로에 추가해야합니다.

    사용하는 IDE에 따라 다른 메뉴에서 구성 할 수 있습니다. 하지만 IDE 외부에서 실행하려면 jar 파일을 다른 기존 jar 파일과 함께 넣어 두거나 사용자 또는 시스템 클래스 경로를 변경하여 포함 된 폴더를 포함시켜야합니다. 항아리.

    네가 필요하다면 너의 시스템을 안다면 내가 정교 할 수있어.

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

    2.com.springsource.org.aopalliance-X.X.X.jar로 교차 확인

    com.springsource.org.aopalliance-X.X.X.jar로 교차 확인

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

    3.pom.xml 파일에 다음 내용이 있는지 확인하십시오.

    pom.xml 파일에 다음 내용이 있는지 확인하십시오.

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${springframework.version}</version>
    </dependency>
    

    오류 스택 추적에 따라.

    원인 : java.lang.NoClassDefFoundError : org / aopalliance / aop / Advice

    다음은 필수 항목입니다.

    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
        <version>${aspectj.version}</version>
    </dependency>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>${aspectj.version}</version>
    </dependency>
    

    물론 Spring과 AOP를 위해 각 버전을 설정하거나 구성해야합니다.

    나중에 Maven을 사용하지 않을 것임을 깨달았습니다. 심지어 Maven Central Repository의 경우에도 위에서 설명한 내 의존성에 따라 필요한 jar 파일을 다운로드 할 수 있습니다.

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

    4.aopalliance jar와 함께 당신은 빌드 경로에 이러한 항아리를 추가 했습니까 ??

    aopalliance jar와 함께 당신은 빌드 경로에 이러한 항아리를 추가 했습니까 ??

    aspectjrt 춘천 aspectjweaver

    그렇지 않은 경우 다음을 추가하여 시도 할 수 있습니다. P.S : jars의 적절한 버전을 사용하십시오 ...

  5. ==============================

    5.당신은 의존성을 놓치고 있습니다. 의존성을 처리하는 방법을 잘 모르겠지만 JAR을 IVY 또는 사용하는 모든 항목에 추가하십시오. 스프링 3.2를 추가하려면 뭔가를 사용해야합니다.

    당신은 의존성을 놓치고 있습니다. 의존성을 처리하는 방법을 잘 모르겠지만 JAR을 IVY 또는 사용하는 모든 항목에 추가하십시오. 스프링 3.2를 추가하려면 뭔가를 사용해야합니다.

    메이븐 센트럴 : 링크

    IVY 예제 : Maven은 다른 의존성 정보를 사용할 수 있습니다.

    웹 응용 프로그램 인 경우 JAR이 APPNAME / WEB-INF / lib에 있는지 확인하십시오.

  6. ==============================

    6.SPRING-LIBRARY를 완전히 제거한 다음 필요한 모든 jar를 하나씩 추가하고 cglib-nodep-2.2.jar를 추가했습니다. 내 코드 에 맞춤법 오류가 있습니다.

    SPRING-LIBRARY를 완전히 제거한 다음 필요한 모든 jar를 하나씩 추가하고 cglib-nodep-2.2.jar를 추가했습니다. 내 코드 에 맞춤법 오류가 있습니다.

    public class RescueDamselQuest implements Quest {
    

    클래스 이름.

    그러나 나는이 철자법 실수가 내가 얻고있는 예외에 대한 이유가 아니라고 확신한다. jar 파일을 처음부터 추가 한 후에 나는 bean이 knights-aop.xml sth .. sth ...에서 언급 된 것처럼 발견되지 않는다는 오류가 발생했습니다. 이것은 내가 오타가 있다고 생각했을 때입니다.

    이것이 내 항아리가 지금 추가되는 방법입니다.

    누군가가이 답변을 얻길 바랍니다.

    ###########편집하다###########

    asm-all & cglib-nodep은 필요하지 않습니다. 또한 봄 다운로드에서 가져온 항아리는 문제를 일으켰습니다. 스프링 다운로드에서 얻은 항아리를 모두 추가하려고 시도했기 때문에 이전 예외를 다시 보여주기 시작했습니다. 따라서 필요한 경우 항아리를 추가하는 것이 좋습니다.

  7. from https://stackoverflow.com/questions/26540782/spring-nested-exception-is-java-lang-noclassdeffounderror-org-aopalliance-aop by cc-by-sa and MIT license