【问题标题】:Running JDK8 for aspectj为 aspectj 运行 JDK8
【发布时间】:2014-09-29 02:58:43
【问题描述】:

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

关于如何解决的任何帮助,或者 aspectj-maven-plugin 是否支持 JDK8。我使用的是 1.6 版本的 aspectj--maven-plugin。

【问题讨论】:

    标签: java maven maven-plugin aspectj


    【解决方案1】:

    我必须实现同样的目标,我发疯似的想弄清楚这一点,幸运的是我能解决它,在这里我告诉你我做了什么:

    要将 aspectj-maven-plugin 与 Java 8 一起使用,您需要版本 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 jars是:

        <!-- 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>
    

    我一直在努力的最重要的事情是您需要手动将 aspectj-maven-plugin 1.7 jar 安装到您的 pom.xml 中,因为这个 jar 还没有在 maven repo 上。

    您可以从 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>
    

    就到这里了,希望对你有所帮助。

    【讨论】:

    • 非常感谢!这帮助很大。
    【解决方案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>
    

    【讨论】:

    • 救了我的命,谢谢!
    【解决方案3】:

    解决此问题的另一种方法是将 JDK 级别降级到 1.7。 JDK 1.7 与 1.4 - 1.6 版本的 aspectj-maven-plugin 配合得很好。

    这是一个屏幕截图,展示了如何在 IntelliJ IDEA 项目中更改 JDK 级别:

    将项目 SDK 设置为 1.7。详情请见documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-19
      • 2019-11-04
      • 1970-01-01
      • 2014-05-01
      • 1970-01-01
      相关资源
      最近更新 更多