我正在尝试使用JDK8运行aspectj-maven插件。但是它给出了一些错误,如:"无法解析类型java.lang.CharSequence。它是从所需的.class文件中间接引用的"
请问有什么帮助来解决这个问题,或者aspectj-maven-plugin是否支持JDK8?我正在使用1.6版本的aspectj-maven-plugin。
我正在尝试使用JDK8运行aspectj-maven插件。但是它给出了一些错误,如:"无法解析类型java.lang.CharSequence。它是从所需的.class文件中间接引用的"
请问有什么帮助来解决这个问题,或者aspectj-maven-plugin是否支持JDK8?我正在使用1.6版本的aspectj-maven-plugin。
我曾经为了实现这个目标而苦苦思索,幸运的是我最终找到了解决方法,现在我将分享一下我的经验:
如果要在 Java 8 中使用 aspectj-maven-plugin
插件,你需要使用版本为 aspectj-maven-plugin 1.7(注意:aspectj-maven-plugin 1.6 适用于 Java 7)。
因此,maven 插件配置应该如下所示:
<!-- AspectJ configuration -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.7-SNAPSHOT</version>
<configuration>
<complianceLevel>1.8</complianceLevel>
<source>1.8</source>
<target>1.8</target>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Spring AOP + AspectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>1.8.1</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.1</version>
</dependency>
我所遇到的最重要的问题是,由于该jar包尚未出现在maven仓库中,因此您需要将aspectj-maven-plugin 1.7 jar手动安装到pom.xml中。
您可以从Haus Jira获取它(请查看附件部分):
https://jira.codehaus.org/browse/MASPECTJ-131
顺便提一句,当您下载并将其复制到存储库后,需要在相应的目录中创建您自己的aspectj-maven-plugin-1.7-SNAPSHOT.pom
文件。您可以从版本1.6中复制它,但确保您修改以下内容:
<version>1.7-SNAPSHOT</version>
<properties>
<aspectjVersion>1.8.1</aspectjVersion>
<mavenVersion>2.2.1</mavenVersion>
<changesPluginVersion>2.9</changesPluginVersion>
</properties>
你不需要1.7-SNAPSHOT。我在POM文件中有这个代码片段,一切都可以正常工作:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
<configuration>
<source>1.8</source>
<target>1.8</target>
<complianceLevel>1.8</complianceLevel>
<showWeaveInfo>true</showWeaveInfo>
</configuration>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.1</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>1.8.1</version>
</dependency>
</dependencies>
</plugin>
解决这个问题的另一种方法是将JDK版本降级到1.7。 JDK 1.7与版本1.4-1.6的aspectj-maven-plugin兼容良好。
以下是显示如何在IntelliJ IDEA项目中更改JDK版本的屏幕截图:
将项目SDK设置为1.7。有关更多详细信息,请参见文档。