我有一个 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/