尝试编译我的aspectj项目时出现以下错误。
[INFO] --- aspectj-maven-plugin:1.4:compile (default) @ jetserver ---
Feb 2, 2012 7:33:31 PM org.sonatype.guice.bean.reflect.LoadedClass
WARNING: Error injecting: org.codehaus.mojo.aspectj.AjcCompileMojo
java.lang.NoClassDefFoundError: org/aspectj/bridge/IMessageHolder
at java.lang.Class.getDeclaredConstructors0(Native Method)
[ERROR] Failed to execute goal org.codehaus.mojo:aspectj-maven-plugin:1.4:compile (default) on project game-server: Execution default of goal org.codehaus.mojo:aspectj-maven-plugin:1.4:compile failed: Unable to load the mojo 'compile' in the plugin 'org.codehaus.mojo:aspectj-maven-plugin:1.4'. A required class is missing: org/aspectj/bridge/IMessageHolder
pom的相关部分粘贴在下面。我有什么想法可以得到这个错误吗?
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.4</version>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.6.11</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>1.6.11</version>
</dependency>
</dependencies>
<configuration>
<source>1.6</source>
<complianceLevel>1.6</complianceLevel>
<verbose>true</verbose>
<showWeaveInfo>true</showWeaveInfo>
<target>1.6</target>
<!-- The following sets up aspectj weaving path. jetserver jar has the
compiled aspect which is used to weave classes in this app -->
<aspectLibraries>
<aspectLibrary>
<groupId>org.menacheri</groupId>
<artifactId>jetserver</artifactId>
<version>0.1</version>
</aspectLibrary>
</aspectLibraries>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
答案 0 :(得分:2)
看起来版本1.6.11存在问题。当我将其修改为1.6.1时,错误就消失了。
我的pom现在看起来像
<强>依赖关系:强>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.6.1</version>
</dependency>
<强>插件:强>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.4</version>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>1.6.1</version>
</dependency>
</dependencies>
<configuration>
<source>1.6</source>
<complianceLevel>1.6</complianceLevel>
<verbose>true</verbose>
<showWeaveInfo>true</showWeaveInfo>
<target>1.6</target>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
如果您正在使用eclipse,以下maven-eclipse-plugin配置允许java src文件夹中的* .aj文件没有问题,并且在执行mvn clean时不会清除eclipse项目的ajdt属性。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.8</version>
<configuration>
<ajdtVersion>1.6</ajdtVersion>
<additionalProjectnatures>
<projectnature>org.eclipse.ajdt.ui.ajnature</projectnature>
<projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
<projectnature>org.eclipse.wst.common.project.facet.core.nature</projectnature>
</additionalProjectnatures>
<!-- Source includes is necessary to allow aj files in the java
folder, else eclipse may throw a filtering exception -->
<sourceIncludes>
<sourceInclude>**/*.aj</sourceInclude>
</sourceIncludes>
<!-- Download sources will make maven download and attach source files
where available -->
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</configuration>