почему мое веб-приложение NoClassDefFoundError: org/aspectj/lang/reflect/AjTypeSystem

У меня есть веб-приложение maven. Я использую JSF, Primefaces, Hibernate, Spring, Spring AOP и ORACLE 11g. Итак, когда я развертываю свое приложение на Glassfish 3, оно работает отлично, но когда я развертываю его на weblogic 12, я получаю следующую ошибку:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'Usuarios' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: BeanPostProcessor before instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/aspectj/lang/reflect/AjTypeSystem

Caused By: java.lang.NoClassDefFoundError: org/aspectj/lang/reflect/AjTypeSystem

Итак, я открыл свою войну, затем посмотрел в WEB-INF/lib и нашел (aspectjrt.jar и aspectweaver.jar), так что я не уверен, что не так. Вот часть моего pom, где я объявляю библиотеки aspectJ:

<properties>
    <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <spring.version>3.2.4.RELEASE</spring.version>
    <aspectj.version>1.7.0</aspectj.version>
    <java.version>1.7</java.version>
    <netbeans.hint.deploy.server>WebLogic9</netbeans.hint.deploy.server>
    <netbeans.hint.j2eeVersion>1.6</netbeans.hint.j2eeVersion>
</properties>


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

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

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

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

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

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${spring.version}</version>
    </dependency>        
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</artifactId>
        <version>${spring.version}</version>
    </dependency>      
    <!-- aspectJ -->
    <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> 

Так кто-нибудь знает, что происходит. Я уже гуглил эту ошибку, но все говорят, что, возможно, пропущены aspectjrt.jar и aspectweaver.jar, но я почти уверен, что это не так.

Заранее спасибо.


person linker85    schedule 11.01.2014    source источник
comment
Вы проверили это?   -  person DLJ    schedule 11.01.2014
comment
да, банки загружаются в войну, и она отлично компилируется с maven. Поэтому, когда я развертываю его в Glassfish, он работает, но он не работает в weblogic 12 по какой-то причине, он сопротивляется распознаванию моего weaver и jar аспекта, которые находятся внутри скомпилированной войны.   -  person linker85    schedule 11.01.2014
comment
Может проблема в настройках?   -  person DLJ    schedule 11.01.2014
comment
Есть ли еще Caused By после этого Caused By?   -  person Robin Green    schedule 11.01.2014


Ответы (1)


Вы пробовали это в weblogic.xml :

<container-descriptor>
   <prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>

и это в weblogic-application.xml:

   <prefer-application-packages>
      <package-name>org.springframework.*</package-name>
   </prefer-application-packages>

Я не пробовал это сам, но нашел это на http://forum.spring.io/forum/spring-projects/aop/91846-can-t-find-ajtypesystem-during-deployment .. в основном происходит то, что даже вы если в вашем WAR есть aspectjrt.jar и aspectweaver.jar, они не загружаются, потому что WLS считает, что они доступны где-то еще в своем системном пути к классам («обычно выше» в иерархии загрузчика классов), иногда с другой версией. Это типичная проблема для серверов приложений EE, и каждый из них (WLS, WAS, JBoss) имеет некоторую конфигурацию, влияющую на порядок загрузки пути к классам. Если вышеописанное не совсем работает, погуглите дальше, и вы все поймете... удачи.

person vorburger    schedule 11.01.2014
comment
это веб-приложение, поэтому у меня есть только weblogic.xml, поэтому после добавления описания контейнера я получаю: Неожиданное исключение при анализе XML-документа из вложенного исключения ServletContex: java.lang.ClassCastException: weblogic.xml.jaxp.RegistryDocumentBuilderFactory нельзя преобразовать в javax .xml.parsers.DocumentBuilderFactory. - person linker85; 11.01.2014
comment
это сработало, я просто добавил пару исключений, спасибо. - person linker85; 11.01.2014