java - 为什么我的Web应用程序NoClassDefFoundError : org/aspectj/lang/reflect/AjTypeSystem

标签 java weblogic aspectj noclassdeffounderror spring-aop

我有一个 Maven Web 应用程序。我正在使用 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

所以我打开了我的 war ,然后我查看了 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可能丢失了,但我很确定它们没有。

提前致谢。

最佳答案

您是否在 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)都有一些配置来影响类路径加载顺序。如果上面的方法不完全有效,请进一步谷歌,你就会找到答案......祝你好运。

关于java - 为什么我的Web应用程序NoClassDefFoundError : org/aspectj/lang/reflect/AjTypeSystem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21058778/

相关文章:

java - 如何在 Java 和 Bluej 中使用 Jackson

java - 关于如何修复此堆栈溢出错误有什么建议吗? java

java - 正则表达式获取直到一个字符的值

java - 如何在 .jsp 页面中创建 Web 服务客户端?

java - Spring:使用@Resource注入(inject)具体类是否需要CGLIB

java - 异步服务中的 Spring 请求范围?通过 threadLocal 变量实现 ThreadScope,加上一个 AsyncAspect 来清理

java - 如何离线使用缓存,否则使用网络

java - Weblogic 11g,在托管服务器上部署了ear,无法访问

jakarta-ee - WebLogic中的组织域

android - 是否可以在 Android Studio 项目中集成 Dagger 和 AspectJ?