运行JDK8以运行aspectj。

9

我正在尝试使用JDK8运行aspectj-maven插件。但是它给出了一些错误,如:"无法解析类型java.lang.CharSequence。它是从所需的.class文件中间接引用的"

请问有什么帮助来解决这个问题,或者aspectj-maven-plugin是否支持JDK8?我正在使用1.6版本的aspectj-maven-plugin。

3个回答

8

我曾经为了实现这个目标而苦苦思索,幸运的是我最终找到了解决方法,现在我将分享一下我的经验:

如果要在 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>

顺便提一下,需要的AspectJ jar包有:
    <!-- 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>

这就是全部内容,希望对你有所帮助。

非常感谢!那帮了我很多。 - Deepesh Nathani

2

你不需要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>

0

解决这个问题的另一种方法是将JDK版本降级到1.7。 JDK 1.7与版本1.4-1.6的aspectj-maven-plugin兼容良好。

以下是显示如何在IntelliJ IDEA项目中更改JDK版本的屏幕截图:

enter image description here

将项目SDK设置为1.7。有关更多详细信息,请参见文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接