2014-10-24 2 views
10

Стек след:Spring: вложенное исключение java.lang.NoClassDefFoundError: орг/aopalliance/АОП/Советы

Oct 24, 2014 8:12:04 AM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh 
INFO: Refreshing org[email protected]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 

конфигурации 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. банку индивидуально и вместе, но ошибка не исчезнет.

Есть подобные вопросы здесь, на SO: spring nested exception is java.lang.NoClassDefFoundError: org/aopalliance/aop/Advice

########### ########### EDIT Update: Другие классы в проекте ##
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."); 
     } 
    } 


Я использую Spring 3.2
################## EDIT2 ############### ###
Я не использую Maven. Пожалуйста, не предоставляйте решение Maven, если Spring AOP невозможно без него.
Проект оснастка:
enter image description here
Внутри SPRING БИБЛИОТЕКА У меня есть все, что банка была скачанной с весной. Возможно ли, что какая-то конкретная жесткая батарея конфликтует с банкой aopalliance?

Если у кого-то есть аналогичный & простой рабочий пример без Maven, предоставьте его.

Благодаря
~ Мохит

+1

Добавьте 'aopalliance.jar', если вы заявили, что добавили его, вы добавили его неправильно или пропустили другой класс. Я настоятельно рекомендую использовать что-то вроде maven для управления вашими зависимостями, а не пытаться выяснить их сами. –

+0

Это довольно простое приложение-заглушка. Я думаю, что использование Maven пока еще может немного переборщить, возможно, после того, как приложение растет. – EMM

+0

Даже с базовым приложением он окупается, экономит много времени на поиск зависимостей. –

ответ

0

Я снял SPRING-БИБЛИОТЕКА и затем добавили все необходимые банки один за другим плюс cglib-nodep-2.2.jar.
Был также орфографическая ошибка в моем коде <bean id="quest" class="com.java.spring.ResqueDamselQuest" />

public class RescueDamselQuest implements Quest { 

Название класса.

Но я уверен, что эта ошибка правописания не была причиной исключения, которое я получал. После добавления банки с нуля я получил эту ошибку, в которой говорилось, что компонент не найден, как упоминалось в knights-aop.xml sth .. sth ..., когда я понял, что у меня есть эта опечатка.

Это как мои банки добавляют в настоящее время:

enter image description here

Я надеюсь, что кто-то может получить помощь от этого ответа.

########### ########### EDIT

ASM-все & CGLIB-nodep не требуется. Кроме того, некоторые баночки из весенней загрузки вызывали проблемы, так как я пытался добавить все баночки, которые я получил весной, и снова начал показывать старое исключение. Поэтому лучше добавлять банку как можно раньше.

7

Похоже, вы только добавить aopalliance банки в сборках пути к классам вашего IDE (Eclipse?). Это объясняет, что среда IDE не обнаруживает ошибок и принимает решение о создании приложения. Но на самом деле вы также должны добавить его в путь класса :.

В зависимости от используемой среды IDE другое меню может разрешить ее настройку. Но если вы хотите запустить его за пределами среды IDE, вы должны поместить банку в свой обычный путь к классу, либо поставив его вместе с другими существующими банками, либо (будет лучше), изменив ваш путь к пользователю или системному классу, чтобы включить в него папку, содержащую банку.

Я мог бы остановиться на том, что если вам нужно, и если я знаю вашу систему ...

+0

Я использую Eclipse 4.4.0. На данный момент у меня нет планов запускать его вне IDE. – EMM

+0

К сожалению, я не знаю, как настроить путь запуска для Eclipse и в настоящее время не имеет доступа к Eclipse IDE. Вы можете попробовать «Run -> Run Configurations ... -> Classpath», но я не смог проверить. Если это не удастся, оно должно работать, если вы добавите каталог, содержащий 'aopalliance' jar, в переменную среды' CLASSPATH' –

+0

. Он показывает мою добавленную банку в классе path в Run -> Run Configurations ... -> Classpath – EMM

0

перепроверить с com.springsource.org.aopalliance-X.X.X.jar

+0

Я уверен, что проверил почти все возможные банки, доступные в Интернете :(Если у вас есть похожий и простой рабочий пример без Maven, пожалуйста, предоставьте его. Было бы очень полезно. Я боюсь с этим в течение последних 10 дней. – EMM

0

Вы пропускаете зависимость. Не уверен, как вы обрабатываете зависимости, но просто добавляйте JAR в IVY или что вы используете.Вы должны использовать что-то, чтобы добавить Spring 3.2.

Maven Central: link

IVY Пример: <dependency org="org.springframework" name="spring-aop" rev="3.2.11.RELEASE" /> Maven имеет другую информацию зависимость имеется.

Если это веб-приложение, убедитесь, что JAR находится в APPNAME/WEB-INF/lib.

0

быть полностью уверены, что у вас есть в вашем файле pom.xml:

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

В соответствии с стека ошибок трассировки.

Caused by: 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> 

Конечно, вы должны установить или настроить каждую версию, для весны и АОП.

Я понимаю, позже вы не работаете с Maven, даже с этим в Maven Central Repository вы можете скачать банки требуется в соответствии со своими зависимостями разделяемых выше

0

Наряду с aopalliance баночкой вы добавили эти банки в ваш путь сборки?

aspectjrt
springaop
aspectjweaver

Если нет, то вы можете попробовать, добавив их ..

PS: использовать соответствующую версию баночки ...

+0

Вы не указали подходящие версии фляги или способ выяснить. Я использовал spring-aop-3.2.10, aopalliance-1.0, aspectjrt-1.5.0, aspectjweaver-1.8.2. Я получаю то же самое ошибка. – EMM