我是一个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
所以我打开了我的战争然后我查看了WEB-INF / lib并找到了(aspectjrt.jar和aspectweaver.jar),所以我不确定哪里错了。 这是我的pom的一部分,我在其中声明了aspectJ libs:
<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>
所以有人都知道发生了什么。我已经用Google搜索了错误,但是每个人都说可能缺少aspectjrt.jar和aspectweaver.jar,但我很确定它们没有。
提前致谢。
答案 0 :(得分:3)
您是否在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)都有一些配置来影响类路径加载顺序。如果上面没有完全正常工作,谷歌会进一步发展,你会明白的......祝你好运。